Java 为什么不是';t Eclipse显示通用HashMap的生成错误<;整数,整数>;使用字符串进行密钥访问? HashMap-aGenericMap=newhashmap(); 整数x=aGenericMap.get(“HeyImInvalid”);

Java 为什么不是';t Eclipse显示通用HashMap的生成错误<;整数,整数>;使用字符串进行密钥访问? HashMap-aGenericMap=newhashmap(); 整数x=aGenericMap.get(“HeyImInvalid”);,java,eclipse,generics,compiler-errors,Java,Eclipse,Generics,Compiler Errors,在我以前的Eclipse版本中,上面的代码被标记为编译错误(正如预期的那样)。 在Eclipse2019-09R(4.13.0)中,这甚至不会引发警告,更不用说编译错误了 如何让Eclipse将其标记为编译错误 现在真的很痛苦,因为我正在使用枚举(与上面示例中的字符串相反),有时我忘记添加“.value”来获取枚举int/整数值,一个讨厌的bug,应该在编译时而不是运行时出现。注意:我在Eclipse中检查了编译器设置,没有看到任何强制对Generics进行正确类型访问的特定设置。这不是类型错误

在我以前的Eclipse版本中,上面的代码被标记为编译错误(正如预期的那样)。 在Eclipse2019-09R(4.13.0)中,这甚至不会引发警告,更不用说编译错误了

如何让Eclipse将其标记为编译错误


现在真的很痛苦,因为我正在使用枚举(与上面示例中的字符串相反),有时我忘记添加“.value”来获取枚举int/整数值,一个讨厌的bug,应该在编译时而不是运行时出现。

注意:我在Eclipse中检查了编译器设置,没有看到任何强制对Generics进行正确类型访问的特定设置。这不是类型错误,因为
Map.get
是一个实际接受
对象的方法。请参阅了解原因。有一些静态分析器工具可以检测此类问题,通常称为“不太可能的比较”。当比较对象与
等于
时,这个问题也更普遍,后者也接受
对象
,但是比较不相关的类很少有用。谢谢您的评论。也许我只是想象Eclipse之前将其捕获为编译错误。例如,Sonar有规则,正是关于这一点。(所提到的
等于
的相关问题在中处理)
HashMap<Integer, Integer> aGenericMap = new HashMap<Integer, Integer>();
Integer x = aGenericMap.get("HeyImInvalid");