java - 为什么java泛型允许在HashMap<Integer,String>的get中传递 boolean 值

标签 java generics hashmap autoboxing

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 方法将不允许我们在那里传递 boolean 值。

谢谢

最佳答案

HashMap 的 get 方法定义为 public V get(Object arg0) {。 这意味着您可以将任何对象作为参数。该方法不使用泛型,因此编译器不会检查参数。

在这里您可以找到javadoc .

关于java - 为什么java泛型允许在HashMap<Integer,String>的get中传递 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42970501/

相关文章:

c# - 使用泛型方法时如何正确约束相关类类型?

scala - 使用案例类No Manifest的Scala Dynamic Parse Json可用于T

java - 如何从 Hashtable<Integer,Hashtable<String,Integer>> h 获取值

java - 未设置 Autowiring 属性

java - Netbeans 中针对 Maven Web 应用程序的 UI 推荐

ios - 在 Swift 中使用泛型返回不同的约束类型

java - session 在 Java 中是如何工作的?

java - 将 List<Object[]> 数组转换为 Map

java - 如何为窗口添加滚动条?

java - Selenium Xpath 在 div 标签内查找表格单元格