java - 为什么我们在java中将对象类型转换为类类型?

标签 java class object casting

我正在尝试覆盖 equals 方法。 由于某种原因,我们的教授将对象参数转换为类型类(计数器)。

有人可以向我解释一下这背后的逻辑吗?如果我代替“Couter that = (Counter) other;”只需删除该行并将“that.count”更改为“other.count”,它就可以正常执行。

public class Counter {

    private int count;

    public Counter() {
        count = 2;
    }

    public boolean equals(Counter other) {
        if (other instanceof Counter) {
            Counter that = (Counter) other;
            return (this.count == that.count);
        } else {
            return false;
        }
    }

    public static void main(String args []) {
        Counter casio = new Counter();
        Counter texas = new Counter();
        System.out.println(casio.equals(texas));
    }
}

最佳答案

您的 equals 方法的签名是错误的。为了重写该方法,它需要有一个 Object 类型的参数:

@Override
public boolean equals(Object other) {

这需要您将 other 转换为 Counter 并执行 instanceof 检查,否则您无法访问 count字段。

关于java - 为什么我们在java中将对象类型转换为类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54948148/

相关文章:

java - Eclipse 插件 : Find location of selected project

c++ - 使用 Visual Studio 2010 调试 C++ 项目时出现问题

c++ - 类的指针与非指针成员

java - 如何将参数从另一个类传递给非静态方法?

javascript - 如何在不是对象或函数的对象实例上进行原型(prototype)设计?

javascript - 对象中数组的求和值

java - java servlet中初始化参数的使用

java - 使用注释处理延迟绑定(bind)到 Dagger2 Graph

java - 在 XP 上使用 isReachable() 进行子网 ping 的线程化

java - 如何在字符串后命名对象引用