答案/编辑:
好的,刚刚意识到我试图错误地使用 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文档和网络,但找不到任何实现 EnumBiMap 类的示例。它的行为与我可以轻松实例化的 HashBiMap 不同。这是我尝试过的 - 这些都不会为我编译:
Map<Integer, String> m = EnumBiMap.create();
..类似于这里的建议:Java: Instantiate Google Collection's HashBiMap
也试过:
Map<Integer, String> m = EnumBiMap.<Integer, String>create();
..类似于此处的格式:Google Guava: How to use ImmutableSortedMap.naturalOrder?
和:
Map<Integer, String> m = EnumBiMap.create(Integer.class, String.class);
有没有人成功实现 EnumBiMap 或看到任何示例?如果是这样,怎么做?