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;
	}
}

 

 

你可能感兴趣的:(DI)