枚举类的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;
}
}