Effective Java(第3版)第6章总结

第34条:用 enum 代替 int 常量

用枚举的情况一般都是某个类别的常量。比如星期、月份、颜色等等。

第35条:用实例域代替序数索引

枚举虽然自带 ordinal 方法,并且从0开始,但是应避免使用这个方法。当需要类似参数,定义一个参数即可。

第36条:用 EnumSet 代替位域

用 OR 位运算将几个常量合并到一个集合中,称作位域(bit field)。比如:常量 | 常量 | 常量...,也就是并集

  • 规律性的常量本身可以用枚举来列举
  • EnumSet 内部具体实现上,每个元素都表示为位矢量。Set 集合的一些操作 add、remove 等,都是利用位运算来实现的
  • 所以建议用 EnumSet 代替位域,以避免手写产生的BUG

第37条:用 EnumMap 代替序数索引

避免把枚举 ordinal 值当数组角标。当注意到第35条,也就不会发生本条的情况了。

第38条:用接口模拟可扩展的枚举

当枚举可能被扩展时,请定义一个接口,就可以有多个实现类。

第39条:注解优先于命名模式

避免使用前缀匹配方式,优先使用注解。

第40条:坚持使用 Override 注解

IDE一般都会提示,有时候会避免一些方法覆盖错误。

第41条:用标记接口定义类型

标记接口是不包含方法声明的接口,实现这类接口,说明类拥有接口标记的功能。比如序列化接口:Serializable

你可能感兴趣的:(Effective Java(第3版)第6章总结)