Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 6 Map.get()类型安全意外行为(?)_Java_Generics - Fatal编程技术网

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,Map.get将返回(key==null?k==null:key.equals(k),我希望返回null,除非您的InstrumentInfo重载了.equals以便能够与整数进行比较


为什么Y get(对象键)不是Y get(X键)我不知道,但我猜这与向后兼容性问题有关。

在这个问题中讨论过,还有…

重复的