Java 6 Map.get()类型安全意外行为(?)
可能重复:Java 6 Map.get()类型安全意外行为(?),java,generics,Java,Generics,可能重复: 根据映射接口的javadocs(),get的定义是 V get(对象键) 返回指定键映射到的值,或null 如果此映射不包含 钥匙 代码示例: Map<InstrumentInfo, Double> moo = new HashMap<InstrumentInfo,Double>(); moo.get(new Integer(5)); mapmoo=newhashmap(); moo.get(新整数(5)); 我希望上面的代码会抛出一个异常,或者至少给出
根据映射接口的javadocs(),get的定义是 V get(对象键) 返回指定键映射到的值,或null 如果此映射不包含 钥匙 代码示例:
Map<InstrumentInfo, Double> moo = new HashMap<InstrumentInfo,Double>();
moo.get(new Integer(5));
mapmoo=newhashmap();
moo.get(新整数(5));
我希望上面的代码会抛出一个异常,或者至少给出一个警告
我希望使用泛型和类型安全性,get方法将接受类型为的参数。接受类型Object而不接受的原因是什么?它只会返回null,因为映射永远不能包含键
这也是为什么您可以从
ArrayList
中remove()
一个Integer
-它在泛型之前工作,所以保持这种方式是为了不破坏旧代码。Map.get的定义是Y get(对象键)对于Map为什么Y get(对象键)不是Y get(X键)我不知道,但我猜这与向后兼容性问题有关。在这个问题中讨论过,还有…重复的