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都有异味,这就是我穿上重构靴的地方!