许多人不喜欢使用 instanceof
,但我发现在很多情况下,当涉及到 equals
方法时,我们几乎没有其他选择。看看下面的类:
class A {
int n;
public A(int n) { this.n = n; }
@Override
public boolean equals(Object o) {
return false;
}
public boolean equals(A o) {
return n == o.n;
}
}
我从来没有见过这样的事情,但它可以替代必须使用 instanceof
来测试 Object
是否是 A
?还是有其他我没有想到的问题?
最佳答案
could it serve as a replacement for having to use instanceof to test if an Object is an A?
没有。这是因为调用的方法是静态选择的,即在大多数情况下只会调用 equals(object o)
。
你可以写
@Override
public boolean equals(Object o) {
return o instanceof A && n == ((A) o).n;
}
关于java - 在 equals 方法中避免 instanceof 的可行方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13497144/