`
bingooh
  • 浏览: 53265 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

6.31 使用实例属性代替ordinal()

 
阅读更多

枚举类的ordinal()用于返回枚举量的序数,根据API说明,此方法仅应该被EnumSet,EnumMap使用。所以不要使用如下代码:

public enum State {
	ON,OFF;
	
	public int numberOfState(){
		//never do this;
		return ordinal()+1;
	}
}

可以使用成员属性存储序列号,修改后的代码如下:

public enum State {
	ON(1),OFF(2);
	
	private final int number;
	
	private State(int number){
		this.number=number;
	}
	
	public int numberOfState(){
		return number;
	}
}

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics