如何将枚举序号转换为字符串?

时间:2013-09-25 14:38:19

标签: java casting enums ordinal

我需要将枚举的序数值作为参数传递给HashMap<String, String>。换句话说,我想将一个序数强制转换为String。

现在,我正在这样做:

HashMap<String, String> myHashMap = new HashMap<String, String>();
myHashMap.put("foo", String.format("%s", MyEnum.BAR.ordinal()));

这是最好的方法吗?此处无法使用.toString()方法,(String)MyEnum.BAR.ordinal()不起作用。

5 个答案:

答案 0 :(得分:2)

您也可以使用

String.valueOf()

myHashMap.put("foo", String.valueOf(MyEnum.BAR.ordinal()));

答案 1 :(得分:1)

您可以使用

myHashMap.put("foo", String.format("%d", Integer.toString(MyEnum.BAR.ordinal())));

或简单地(信用@OldCurmudgeon)

myHashMap.put("foo", Integer.toString(MyEnum.BAR.ordinal()));

免责声明:必须同意使用Map<String, MyEnum>是更好的方法的评论

答案 2 :(得分:1)

ordinal()是一个可能会改变的内部号码。我建议你使用

Map<String, String> myMap = new HashMap<>();
myMap.put("foo", MyEnum.BAR.toString());

Map<String, Object> myMap = new HashMap<>();
myMap.put("foo", MyEnum.BAR);

Map<String, MyEnum> myMap = new HashMap<>();
myMap.put("foo", MyEnum.BAR);

答案 3 :(得分:1)

使用HashMap<String, Integer>并且未将序号转换为字符串

的最佳方法

答案 4 :(得分:0)

我想最好使用枚举名称作为键

MyEnum.BAR.name()

并转换回来

MyEnum.valueOf("BAR")