我想达到的是这样的效果,就是每个 Enum 中会有一个对应的常量,读取一个常量通过这个常量后来得到对应的 Enum,具体的说就是像下面这样的(没注释多包涵)public enum EnumTest{
A("0"),
B("1"),
C("2"),
;
EnumTest(String code){
this.code=code;
}
public EnumTest getEnum(String code){
for (EnumTest et:EnumTest.values())
if (et.getCode().equals(code))
return et;
return null;
} public String getCode(){
return code;
} public static void main(String[] args){
System.out.println(EnumTest.A.getEnum("2"));
} private String code;
}
感觉上应该有更好的办法的。
A("0"),
B("1"),
C("2"),
;
EnumTest(String code){
this.code=code;
}
public EnumTest getEnum(String code){
for (EnumTest et:EnumTest.values())
if (et.getCode().equals(code))
return et;
return null;
} public String getCode(){
return code;
} public static void main(String[] args){
System.out.println(EnumTest.A.getEnum("2"));
} private String code;
}
感觉上应该有更好的办法的。
看来我还是没讲清楚,我要做的事是是这样的:
比如,我现在知道字符串"2" ,就可以得到 EnumTest.C ,相对的知道 "1" 到得 EnumTest.B 有点像求反函数的过程,但是很显然,我还没找到更简单的办法,只好暂时用上面的代码对付一下。我不是学计算机的,所以不知道应该怎么说。基本上用程序员的话来说,我只是想知道我的那个 getEnum 的方法有没有更简单的实现。
public class Test {
public static void main(String[] args) { System.out.println(EnumTest.A.getEnum(1)); }
}enum EnumTest {
A, B, C, ; public EnumTest getEnum(int a) {
for (EnumTest et : EnumTest.values())
if (et.ordinal() == a)
return et; return null;
}
}
Enum(String code){
this.code=code;
addIndex(this);
}
void addIndex(Enum e){
index.put(e.code, e);
}
public static Enum getEnum(String code){
return index.get(code);
}