扩展类型 - 枚举
扩展类型:类型别名、枚举、接口、类
枚举通常用于约束某个变量的取值范围。
字面量和联合类型配合使用,也可以达到同样的目标。
字面量类型的问题
-
在类型约束位置,会产生重复代码。可以使用类型别名解决该问题。
-
逻辑含义和真实的值产生了混淆,会导致修改真实值得时候,产生大量得修改。
这是什么意思呢,如果在大中型项目里面,需要改变性别的值。改成帅哥和美女,需要进行大量的修改。但是帅哥和男的逻辑含义是一样的。而枚举可以解决这个问题。 -
字面量类型不会进入编译结果。
可以发现,最终的编译结果没有字面量类型取值范围。如果需要动态的取值,字面量类型有很大的局限性。
枚举
如何定义一个枚举
enum 枚举名 {
枚举字段1 = 值1,
枚举字段2 = 值2
}
枚举会出现到编译结果中。
枚举的规则:
- 枚举的字段值可以是字符串或数字
数字枚举的值会自动自增(有初始值则按初始值递增,否则从0开始) - 被数字枚举约束的变量,可以直接赋值为数字(最好不用,尽量使用逻辑名称)。
- 数字枚举的编译结果 和 字符串枚举有差异
最佳实践
- 尽量不要再一个枚举中既出现字符串字段,又出现数字字段。
- 使用枚举时,尽量使用枚举字段的名称,而不是真实的值