FindBugs在我的代码中识别出以下错误:
Long引用的可疑比较
我试过谷歌搜索这个特殊的错误,但没有运气.据我所知,比较数据类型的字段Long应该由==运营商完成.
if (materialDefinition.getId() == definitionToRemoveFromClass.getId()) {
//...
}
Run Code Online (Sandbox Code Playgroud)
我确定这两种方法都会.getId()返回Long.
这真的是一个问题,如果是这样,我该如何解决?
ars*_*jii 12
这真的是一个问题,如果是这样,我该如何解决?
是的,您要比较引用而不是值,因此Long具有相同值的两个不同实例将导致该比较false.您应该使用Long#equals():
final Long id1 = materialDefinition.getId();
final Long id2 = definitionToRemoveFromClass.getId();
if (id1.equals(id2)) {
//...
}
Run Code Online (Sandbox Code Playgroud)
如果getId()可以返回null,那么还要确保包括相应的null检查(虽然getId()听起来不像应该返回的方法null).
| 归档时间: |
|
| 查看次数: |
6225 次 |
| 最近记录: |