Java 如何将枚举序号转换为字符串?
我需要将枚举的序号值作为参数传递给Java 如何将枚举序号转换为字符串?,java,casting,enums,ordinal,Java,Casting,Enums,Ordinal,我需要将枚举的序号值作为参数传递给HashMap。换句话说,我想把序数转换成字符串 现在,我正在这样做: HashMap<String, String> myHashMap = new HashMap<String, String>(); myHashMap.put("foo", String.format("%s", MyEnum.BAR.ordinal())); HashMap myHashMap=newhashmap(); myHashMap.put(“foo”,
HashMap
。换句话说,我想把序数转换成字符串
现在,我正在这样做:
HashMap<String, String> myHashMap = new HashMap<String, String>();
myHashMap.put("foo", String.format("%s", MyEnum.BAR.ordinal()));
HashMap myHashMap=newhashmap();
myHashMap.put(“foo”,String.format(“%s”,MyEnum.BAR.ordinal());
这是最好的办法吗?.toString()
方法在此处不可用,并且(String)MyEnum.BAR.ordinal()
不起作用。您可以使用
myHashMap.put("foo", String.format("%d", Integer.toString(MyEnum.BAR.ordinal())));
或者干脆(credit@OldCurmudgeon)
免责声明:您必须同意使用Map
是一种更好的方法的评论
myHashMap.put("foo", String.format("%d", Integer.toString(MyEnum.BAR.ordinal())));
或者干脆(credit@OldCurmudgeon)
免责声明:必须同意使用Map
是一种更好的方法的评论ordinal()
是一个可以更改的内部数字。我建议你用
Map<String, String> myMap = new HashMap<>();
myMap.put("foo", MyEnum.BAR.toString());
Map myMap=newhashmap();
myMap.put(“foo”,MyEnum.BAR.toString());
或
Map myMap=newhashmap();
myMap.put(“foo”,MyEnum.BAR);
或
Map myMap=newhashmap();
myMap.put(“foo”,MyEnum.BAR);
序号()是一个可以更改的内部数字。我建议你用
Map<String, String> myMap = new HashMap<>();
myMap.put("foo", MyEnum.BAR.toString());
Map myMap=newhashmap();
myMap.put(“foo”,MyEnum.BAR.toString());
或
Map myMap=newhashmap();
myMap.put(“foo”,MyEnum.BAR);
或
Map myMap=newhashmap();
myMap.put(“foo”,MyEnum.BAR);
您也可以使用
myHashMap.put("foo", String.format("%d", Integer.toString(MyEnum.BAR.ordinal())));
你也可以用
myHashMap.put("foo", String.format("%d", Integer.toString(MyEnum.BAR.ordinal())));
如果您使用
HashMap
并且没有将序号转换为字符串,那么这是最好的方法。如果您使用HashMap
并且没有将序号转换为字符串,那么最好使用enum name作为键
MyEnum.BAR.name()
和转换回来
MyEnum.valueOf("BAR")
我想最好使用enum名称作为键
MyEnum.BAR.name()
和转换回来
MyEnum.valueOf("BAR")
甚至
myHashMap.put(“foo”,“MyEnum.BAR.ordinal())代码>甚至更简单:myHashMap.put(“foo”,Integer.toString(MyEnum.BAR.ordinal())代码>@OldCurmudgeon使用“”+
串联将某些内容转换为字符串不是一个好的做法,有效的事实并不意味着是好的代码>甚至更简单:myHashMap.put(“foo”,Integer.toString(MyEnum.BAR.ordinal())代码>@OldCurmudgeon使用“”+
串联将某些内容转换为字符串不是一个好的做法,有效的事实并不意味着是好的。为什么要使用这种结构?有许多更干净的方法来组织代码,最明显的是使用Map
@chrylis,这需要进行重大重构并影响许多其他事情。为什么要使用这种结构?有许多更干净的方法来组织代码,最明显的是使用Map
@chrylis,这需要进行重大重构,并影响许多其他事情。@chrylis你是对的,但我认为这可能是一个太大的变化。;)老实说,我想不出任何一种情况下,您想要存储一个字符串
表示并同时存储序数是有意义的。。。整个API都有异味,这就是我穿上重构靴的地方@克丽丽:你说得对,但我觉得这可能是太大的变化了老实说,我想不出任何一种情况下,您想要存储一个字符串
表示并同时存储序数是有意义的。。。整个API都有异味,这就是我穿上重构靴的地方!