我需要创建一个空地图。
if (fileParameters == null)
fileParameters = (HashMap<String, String>) Collections.EMPTY_MAP;
问题是上面的代码产生了这个警告: Type safety: Unchecked cast from Map to HashMap
创建此空地图的最佳方法是什么?
原文由 JorgeO 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要创建一个空地图。
if (fileParameters == null)
fileParameters = (HashMap<String, String>) Collections.EMPTY_MAP;
问题是上面的代码产生了这个警告: Type safety: Unchecked cast from Map to HashMap
创建此空地图的最佳方法是什么?
原文由 JorgeO 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1) 如果 Map 可以是不可变的:
当编译器无法自动确定需要哪种 Map 时,有时您将不得不使用后者(这称为 类型推断)。例如,考虑这样声明的方法:
将空 Map 直接传递给它时,必须明确类型:
2) 如果你需要能够修改Map,那么例如:
(正如 tehblanx 指出的那样)
附录:如果您的项目使用 Guava ,您有以下选择:
1) 不可变地图:
当然,与
Collections.emptyMap()
相比,这里没有什么大的好处。 从 Javadoc :2) 您可以修改的地图:
Maps
包含用于实例化其他类型地图的类似工厂方法,例如TreeMap
或LinkedHashMap
。更新(2018 年) :在 Java 9 或更新版本上,创建不可变空映射的最短代码是:
…使用 JEP 269 中的新 便利工厂方法。 😎