您的位置:首页 > Web前端

Effective Java读书笔记(第6章-枚举和注解)

2014-07-09 15:40 183 查看
     第6章  枚举和注解

     Java 1.5发行版本中增加了2个新的引用类型家族:一种新的类称作枚举类型,一种新的接口称作注解类型。

     第30条:用enum代替int常量

     Java的枚举本质上是int值,枚举类型是实例受控的,它们是单例的泛型化,本质上是单元素的枚举。枚举类型为类型安全的枚举模式。

     

     第31条:用实例域代替序数

     所有的枚举都有一个ordinal方法,它返回每个枚举常量在类型中的数字位置。

public enum Ensemble {
SOLO, DUET, TRIO, QUARTET, QUINTET,SEXTET, SEPTET,
OCTET,NONET,DECTET;

public int numberOfMusicians(){
return ordinal()+1;
}
}     以上代码不利于维护,永远不要根据枚举的序数导出与它关联的值,而是要将它保存在一个实例域中。
public enum Ensemble {
SOLO(1), DUET(2), TRIO(3), QUARTET(4), QUINTET(5),SEXTET(6), SEPTET(7),
OCTET(8),NONET(9),DECTET(10);

private final int numberOfMusicians;

Ensemble(int size){
this.numberOfMusicians = size;
}
public int numberOfMusicians(){
return numberOfMusicians+1;
}
}

     它是设计成用于像EnumSet和EnumMap这样的数据结构,如果不写这些数据结构,就避免使用ordinal方法。

     第32条:用EnumSet代替位域

          

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

     第34条:用接口模拟可伸缩的枚举

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

     第36条:坚持使用Override注解

     第37条:用标记接口定义类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: