为什么这个演员会工作?
import java.util.HashMap;
import java.util.Map;
public class TestMap {
public static void main(String[] args) {
Map>>> resultMap = new HashMap<>();
Map aMap = new HashMap();
Map hiddenMap = new HashMap();
hiddenMap.put("fortytwo", 42);
aMap.put("key", hiddenMap);
resultMap = (Map>>>) aMap.get("key");
System.out.println(resultMap);
}
}
这个:
Map>>>> resultMap = new HashMap<>();
...
resultMap = (Map>>>>) aMap.get("key");
等等…
这是如何发生的隐藏地图是Map< String,Integer>成功转换为Map< String,Map< String,Map< String,Map< String,Integer>>>>结果映射?
始终打印:
{fortytwo = 42}
这也适用(地图而不是地图):
public static void main(String[] args) {
Map>>>> resultMap = new HashMap<>();
Map aMap = new HashMap();
Map hiddenMap = new HashMap();
hiddenMap.put("fortytwo", 42);
aMap.put("key", hiddenMap);
resultMap = (Map>>>>) aMap.get("key");
System.out.println(resultMap);
}
编辑:所以@shizhz说,这是因为类型擦除当然!所以上面的代码相当于:
Map resultMap = new HashMap();
Map aMap = new HashMap();
Map hiddenMap = new HashMap();
hiddenMap.put("fortytwo", 42);
aMap.put("key", hiddenMap);
resultMap = (Map) aMap.get("key");
这也有效