使用无效类的 Java 通用类型 get 调用不会导致编译器错误

标签 java generics compiler-errors

<分区>

为什么这段 Java 代码没有产生任何编译错误?

Map<String, String> m = new HashMap<String, String>();
m.get(1);

我试图在将字符串映射到字符串的映射中找到一个整数。这显然是一个编程错误。

同样,这段代码也不会产生错误:

Map<Integer, String> m = new HashMap<Integer, String>();
m.get("dd1");

因此 Java 编译器似乎不检查 Map.get(Object) 方法的参数类型。有什么想法吗?

最佳答案

Java compiler does not seem to check the type of the argument to Map.get(Object) method.

当然可以。它检查它是否是一个 Object. 没有其他要检查的东西。可能存在“无效类”的唯一方法是使用原始类型。

关于使用无效类的 Java 通用类型 get 调用不会导致编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20345301/

相关文章:

java - 在java中检查4个Arraylists不包含相同值的最简单方法

java - 泛型类型作为构造函数参数

swift - 是否可以向 Swift 协议(protocol)一致性扩展添加类型约束?

c++ - C++尝试使用max和累加函数

java - 横向模式在 Android Studio 中不起作用

java - 查找对象参数化注释的运行时类类型

java - 如何优化参数

c# - 如何添加通用约束?

visual-studio-2010 - 如何使用VS2010在Windows上静态编译SDL游戏

c# - 在编译时使用三元运算符计算字符串常量