HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1, "aaa");
hashMap.put(2, "baa");
hashMap.put(3, "caa");
System.out.println(hashMap.get(false));
上面的代码编译并运行正常..输出为null
。
我想要了解的是,我之间似乎错过了任何自动装箱。因为如果在编译时应用泛型,get方法不允许我们在那里传递布尔值。
由于
答案 0 :(得分:2)
HashMap的get
方法定义为public V get(Object arg0) {
。
这意味着您可以将任何对象作为参数。该方法不使用泛型,因此编译器不会检查参数。
您可以在这里找到javadoc。
答案 1 :(得分:0)
mao imnplementation的源代码是以 Object 作为参数,所以你基本上可以像任何你想要的那样传递param ...
data.frame
和HashMap
igraphs
因此,如果您将另一个实例作为参数,则该方法将返回 null
答案 2 :(得分:0)
/MD
中get
方法的签名是
public class HashMap<K,V>
它不是通用的。因此,它不仅仅是get(Object key)
,您可以传递任何对象,它会提供一些输出(如果它不存在,则为boolean
。
我认为您将此签名与
混淆null
如果是这种签名,那么您的操作将不被允许。
答案 3 :(得分:0)
Map.get
不是通用方法。这样它就保持了与前仿制药Java的可比性。如果它是通用的,保持兼容性将需要删除旧方法(因为所有类型都匹配Object
导致编译器的歧义)。