java的枚举真的很有意思。原本在C#里简简单单的事情,在JAVA里面搞得那么复杂。
下面是一个枚举定义:
package com.monkey.zjfwpt.modules.hyjj.entity;
public enum ENormal {
FZXZ (1),ZDXM(2),CLOUD(4);
private final int value;
private ENormal(int value) {
this.value = value;
}
public ENormal valueOf(int value) {
switch (value) {
case 1:
return ENormal.FZXZ;
case 2:
return ENormal.ZDXM;
default:
return null;
}
}
public int value() {
return this.value;
}
}
这哪是什么枚举,就是一个类啊。而且还有点莫名其妙。本来也可以最简单的:
public enum ENormal {
FZXZ,ZDXM,CLOUD;
}
之所以要像第一个例子那样写一大坨,就是为了类型转换。像本例,枚举ENormal实际上是一个整型,但在java中,不能这样写:
int en = (int)ENormal.FZXZ;
要这样:
int en = ENormal.FZXZ.value();
为了这个value()
,就是我们写一大坨的原因。
当然啦,如果是采用最简单的方式
public enum ENormal {
FZXZ,ZDXM,CLOUD;
}
也不是不行,但我们只能通过读枚举元素下标(序号)的方式来获得整型值:
int en = ENormal.ordinal();
从0开始吧好像。不过这样有个风险,就是万一中途插入一个新的枚举元素,岂不乱套了。