提示三十四:使用枚举类型替代整型常量。
作者先介绍了int和String枚举模式,他们有着很多缺点,然后就引出了枚举类型。
- 枚举是通过公共静态 final 属性为每个枚举常量导出一个实例的类,是单例的泛型化,基本上是单元素的枚举。
- 枚举类是类型安全的。因为本身值的调用和传递都是已经确定,所以当尝试传递错误类型的值将导致编译时错误。
- 具有相同名称常量的枚举类型可以和平共存,因为每种类型都有其自己的名称空间。
- 枚举类型还允许添加任意方法和属性并实现任意接口。
- 静态的
values()
方法可以按照声明顺序返回它的值数组。 - 如果一个枚举是广泛使用的,它应该是一个顶级类; 如果它的使用与特定的顶级类绑定,它应该是该顶级类的成员类。
- 如果在枚举外面使用
switch
,通过判断枚举的类型决定特定的行为,则应该把行为定义在枚举内部,这样可以避免新加枚举忘记扩展。
以前我不是很喜欢用枚举,但是后来发现用枚举来实现策略模式非常简洁而且还不用新建很多类,写起代码来也比较快,所以我现在遇到类似情况都会喜欢用枚举去解决。
网友评论