Dan*_*ter 8 java generics dictionary hashmap
我仍然习惯于Java Generics,但是我目前正在更新在泛型之前编写的应用程序以使用最新版本的java.
问题是代码不是用类型安全写的!
我们有一大堆地图,基本上包含各种对象类型,包括字符串.例如:
Map map = new HashMap();
map.put("key1", "String1");
map.put("key2", new Date());
map.put("key3", new CutsomClass());
Run Code Online (Sandbox Code Playgroud)
现在我仍在努力处理这些问题的最佳方法,而不需要重构大量的代码.目前,重构不是一种选择.
目前我看不到任何过去Map<String, Object>虽然Map<String, ? super Object>有效,但我认为它基本上是一回事?
Mic*_*ael 11
我仍在努力处理这些问题的最佳方法,而不需要重构大量的代码
所以不要改变它们.原始类型(即非泛型类型)在技术上仍然有效.这不是理想的,它会产生编译器警告,但代码将起作用(好吧,工作和以前一样).
所有类都会扩展,Object因此您可以将所需的任何值放入以下映射中:
Map<String, Object> map = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
你得到一个额外的保证,键是一个字符串,所以它比使用原始类型更好.
但基本上,如果您无法定义键的类型或值,则应该尽量避免使用映射.