Java泛型 - 混合对象映射

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)

你得到一个额外的保证,键是一个字符串,所以它比使用原始类型更好.

但基本上,如果您无法定义键的类型或值,则应该尽量避免使用映射.

  • @Radiodef好一个.[Valhalla项目](https://en.wikipedia.org/wiki/Project_Valhalla_(Java_language))绝对是一个有趣的命题. (2认同)