有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java:试图使用错误类型作为映射键时出现编译器或Eclipse警告

我最近被一个bug咬了一口,其中我有一个键类型为Long的映射,但我试图将它用于String类型的键。我基本上是这样的:

Map<Long, Object> map;
...
String wrongType;
if (map.containsKey(wrongType)) {
    // Do something
} else {
    // Do something different
}

因为映射中的所有键都是Long类型,所以代码总是执行else

由于containsKeyget方法采用Object类型的参数,因此可以毫无怨言地接受任何旧类型的对象

我的困惑源于这样一个事实,即同一个实体在我们的系统中以两种不同的方式表示(有时作为Long,有时作为String);我不能轻易改变这个。有没有办法在开发过程中而不是在测试过程中捕捉到这样的错误?也许是一个编译器标志或某个Eclipse选项,它对我应该在containsKeyget方法(以及Set中的类似方法)中使用哪种类型的对象更为明智一些


共 (0) 个答案