枚举和注解

2016-10-10  本文已影响238人  求闲居士
30,用enum代替int常量

枚举类型是指由一组固定的常量组成合法值的类型。

与int常量相比,枚举的优势是不言而喻的。

31,用实例域代替序数

所有的枚举都有一个ordinal方法,它返回每个枚举常量在类型中的数字的位置。它是设计成用于像EnumSet和EnumMap这种基于枚举的通用数据结构的。

永远不要根据枚举的序列数导出与它有关的值,而是要把它保存在一个实例域中。

32,用EnumSet代替位域

这种表示法让你用OR位运算将几个常量合并到一个集合中,称作位域。

比如,某个方法通过参数获取类的一个常量。有些像从Map中通过key获取值。

java.util包提供了EnumSet类来有效地表示从单个枚举类型中提取多个值的多个集合。

33,用EnumMap代替序数索引

如果你所表示的这种关系是多维的,就使用EnumMap<..., EnumMap<...>>。应用程序在一般情况下都不使用Enum.ordinal,即使要用也很少,因此这是一种特使情况。

34,用接口模拟可伸缩的枚举

枚举类型可以通过给操作码类型和(属于接口的标准实现的)枚举定义接口,来实现任意接口。

例如,假设你想要定义一个上述操作类型的扩展,由求幂和求和操作组成。你所要做的就是编写一个枚举类型,让他实现接口。

35,注解优先于命令模式
36,坚持使用@Override注解

它表示注解的方法声明覆盖了超类型中的一个声明。

37,用标记接口定义类型

标记接口(marker interface)是没有保护方法声明的接口,而只指明(或者标明)一个类实现了具有某种属性的接口。例如Serializable接口

上一篇 下一篇

猜你喜欢

热点阅读