答/编辑:
好吧,刚才意识到我试图错误地使用EnumBiMap.我想要一个不允许空值的双映射,我想这是Guava库所没有的.我查看了ImmutableBiMap,但它应该是静态的,具有不变的值.猜猜在将任何内容放入HashBiMap之前我必须检查null.
也就是说,这是你可以实例化/使用EnumBiMap的方法:
鉴于枚举:
enum Test{
    VAL;
}  
使用:
Map<Test, Test> m = EnumBiMap.create(Test.class, Test.class);
m.put(Test.VAL, Test.VAL);
或者,如果您想要更通用的EnumBiMap,它支持任何枚举类型:
Map<Enum, Enum> m = EnumBiMap.create(Enum.class, Enum.class);
m.put(Test.VAL, Test2.VAL2);
原始问题:
我查看了Guava API文档和Web,但找不到任何实现EnumBiMap类的示例.它与HashBiMap的行为不同,我可以很容易地实例化它.这是我尝试过的 - 这些都不会为我编译:
Map<Integer, String> m = EnumBiMap.create();
..类似于这里建议的内容:Java:实例化Google Collection的HashBiMap
还尝试过:
Map<Integer, String> m = EnumBiMap.<Integer, String>create();
..类似于格式化:Google Guava:如何使用ImmutableSortedMap.naturalOrder?
和:
Map<Integer, String> m = EnumBiMap.create(Integer.class, String.class);
有没有人成功实现过EnumBiMap或看过任何例子?如果是这样,怎么样?
你的意思是(番石榴版14.0):
Map<Test, Test> m = EnumBiMap.create(Test.class, Test.class);
m.put(Test.VAL, Test.VAL);
请注意签名:
<K extends Enum<K>, V extends Enum<V>> EnumBiMap<K, V> create(Class<K> keyType, Class<V> valueType)
所以,Integer和String不适合ķ或V.
| 归档时间: | 
 | 
| 查看次数: | 1096 次 | 
| 最近记录: |