我需要将枚举的序数值作为参数传递给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()
不起作用。
答案 0 :(得分:2)
答案 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")