java - 在 equals 方法中避免 instanceof 的可行方法?

标签 java equals instanceof

许多人不喜欢使用 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/

相关文章:

Java:如何在不使用 Sort() 的情况下基于自定义对象 ArrayList 创建排序字符串 ArrayList

java - JNI 和访问子类

java - 使用仅在运行时可获得的静态类型

java - Android:用于编译的JDK版本对最低支持的api有影响吗?

java - 为什么在定义 hashCode() 和 equals() 后我的代码仍然比较链接

java - If 语句中的空指针异常

php - PHP 中是否有像 Java 中的 __equals 方法?

java - 查看两个对象是否具有相同的类型

java - 实体 Sprite 怪物实体实例...就这么简单但不起作用?

java - TestNG 软断言输出不符合预期