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

     第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条:用标记接口定义类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值