关于 Java Enum 的问题

zpsigma 2008-11-13 06:36:46
我想达到的是这样的效果,就是每个 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;
}


感觉上应该有更好的办法的。
...全文
897 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Iangao 2008-11-14
  • 打赏
  • 举报
回复
把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);
}
ZangXT 2008-11-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qusic 的回复:]
枚举有一个valueOf(String name) 的方法,直接使用不久行了?
[/Quote]
实现的不是lz需要的功能。
qusic 2008-11-13
  • 打赏
  • 举报
回复
枚举有一个valueOf(String name) 的方法,直接使用不久行了?
zpsigma 2008-11-13
  • 打赏
  • 举报
回复
多谢 KOOK_OKKO ,但是这不是我想要的结果,我的程序中 enum 里的那些描述 enum 属性的常量是必不可少的。
KOOK_OKKO 2008-11-13
  • 打赏
  • 举报
回复

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

zpsigma 2008-11-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bruni 的回复:]
糊涂了. 不知道你要干什么
[/Quote]

看来我还是没讲清楚,我要做的事是是这样的:
比如,我现在知道字符串"2" ,就可以得到 EnumTest.C ,相对的知道 "1" 到得 EnumTest.B 有点像求反函数的过程,但是很显然,我还没找到更简单的办法,只好暂时用上面的代码对付一下。我不是学计算机的,所以不知道应该怎么说。基本上用程序员的话来说,我只是想知道我的那个 getEnum 的方法有没有更简单的实现。
shuaiAWP 2008-11-13
  • 打赏
  • 举报
回复
感觉你写的很好了
mark一下
bruni 2008-11-13
  • 打赏
  • 举报
回复
糊涂了. 不知道你要干什么
echoabs 2008-11-13
  • 打赏
  • 举报
回复
enum是JDK5.0的新加进来的,感觉是挺好的,LZ的意思是比上面有更好的方法而不用enum方法还是上面的方法的代码过多?我感觉上面的方法挺好的,也挺简单的,是enum的基本用法了!!!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧