我在课程Finding
中编写了以下等于函数:
@Override
public boolean equals(Object o) {
if (!(o instanceof Integer)) {
return super.equals(o);
}
return (o.equals(permanentID) || o.equals(tempID));
}
tempID和permanentID都是整数。现在当我打电话给find.equals(5)时,我在检查中收到警告:
不可转换类型'Integer'和第55行'Finding'对象之间的'等于()'
我可以选择为语句,成员或类禁止这个。但实际上我想要对此equals函数的任何调用都禁止它。有没有办法做到这一点?
答案 0 :(得分:1)
警告是您的equals方法不正确这一事实的副作用。根据{{1}} equals
的合同(您要覆盖的方法),Object
无法与您的Integer
对象相等。
这些是equals方法的规则:
您最好创建一种新方法来进行上述比较,如果您保留Finding
方法,则可能会得到一些奇怪的结果。