我想达到的是这样的效果,就是每个 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;
}
感觉上应该有更好的办法的。

解决方案 »

  1.   

    enum是JDK5.0的新加进来的,感觉是挺好的,LZ的意思是比上面有更好的方法而不用enum方法还是上面的方法的代码过多?我感觉上面的方法挺好的,也挺简单的,是enum的基本用法了!!!
      

  2.   


    看来我还是没讲清楚,我要做的事是是这样的:
    比如,我现在知道字符串"2" ,就可以得到 EnumTest.C ,相对的知道 "1" 到得 EnumTest.B 有点像求反函数的过程,但是很显然,我还没找到更简单的办法,只好暂时用上面的代码对付一下。我不是学计算机的,所以不知道应该怎么说。基本上用程序员的话来说,我只是想知道我的那个 getEnum 的方法有没有更简单的实现。
      

  3.   


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

  4.   

    多谢 KOOK_OKKO ,但是这不是我想要的结果,我的程序中 enum 里的那些描述 enum 属性的常量是必不可少的。
      

  5.   

    枚举有一个valueOf(String name) 的方法,直接使用不久行了?
      

  6.   

    把getEnum写成静态的吧,会好用些,直接EnumTest.getEnum("2")就行了,这和数据库查询一样,要么遍历,要么索引,你这种是遍历, 这样可能Code多时影响速度, 如果怕影响速度,就在EnumTest里加个Map索引吧(增加内存用量),Java本身好像没有你这个功能.        private static Map<String,Enum> index=new HashMap<String,Enum>();
            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);
            }