Java:试图使用错误类型作为映射键时出现编译器或Eclipse警告
我最近被一个bug咬了一口,其中我有一个键类型为Long
的映射,但我试图将它用于String
类型的键。我基本上是这样的:
Map<Long, Object> map;
...
String wrongType;
if (map.containsKey(wrongType)) {
// Do something
} else {
// Do something different
}
因为映射中的所有键都是Long类型,所以代码总是执行else
块
由于containsKey
和get
方法采用Object
类型的参数,因此可以毫无怨言地接受任何旧类型的对象
我的困惑源于这样一个事实,即同一个实体在我们的系统中以两种不同的方式表示(有时作为Long
,有时作为String
);我不能轻易改变这个。有没有办法在开发过程中而不是在测试过程中捕捉到这样的错误?也许是一个编译器标志或某个Eclipse选项,它对我应该在containsKey
和get
方法(以及Set
中的类似方法)中使用哪种类型的对象更为明智一些
共 (0) 个答案