是我理解错了,还是描述错了?
Equals 检查不兼容的操作数 (EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS)
这个equals方法正在检查参数是否是一些不兼容的类型(即,一个既不是定义equals方法的类的超类型也不是子类型的类)。例如,Foo 类可能有一个如下所示的 equals 方法:
public boolean equals(Object o) {
if (o instanceof Foo)
return name.equals(((Foo)o).name);
else if (o instanceof String)
return name.equals(o);
else return false;
这被认为是不好的做法,因为它很难实现对称和传递的 equals 方法。如果没有这些属性,可能会出现非常意想不到的行为。
来自: http: //findbugs.sourceforge.net/bugDescriptions.html#EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS
描述说 Foo 类可能有一个这样的 equals 方法,然后说“这被认为是不好的做法”。我没有得到“正确的方法”..
以下方法应该如何正确?
@Override
public boolean equals(Object obj) {
if (obj instanceof DefaultTableModel)
return model.equals((DefaultTableModel)obj);
else
return false;
}