java - 我想知道java中一行的含义

标签 java casting comparison type-conversion

下面一行Java代码是什么意思

  class Dog {
    int size;

    Dog(int size) {
        this.size = size;
    }

    public boolean equals(Object o) {
        return this.size == ((Dog) o).size; // im not getting whats the meaning of this line
    }
}

我想知道下面这行的意思:

return this.size== ((Dog)o).size;

最佳答案

意思是:比较当前对象的 size 变量与另一个对象的 size 变量是否相等。结果是一个 boolean 值,作为 equals 方法的结果返回。

隐式断言另一个对象属于同一类型。 equals 的正确实现必须在这种情况下抛出 ClassCastException,而是返回 false。因此,此实现不符合 Object#equals 方法的约定。

在我看来,开发人员感觉自己很聪明,并且“发现”了一种简洁地实现 equals 的方法。一个正确但仍然非常简洁的实现应该是这样的:

return o instanceof Dog && ((Dog)o).size == this.size;

关于java - 我想知道java中一行的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18273220/

相关文章:

java - JLabel 放置在另一个 JLabel 顶部的情况下的 mouseClicked 事件

java - 使用 Java 的数学函数得出 View 分页页码时出现问题

java - Tomcat 中的同步和异步请求处理有何不同?

java - 使用 LWJGL 在 Java 中光线转换透明 PNG

逐字节比较两个文件

javascript - 在 JavaScript 中,typeof x == 'y' 和 typeof x === 'y' 之间有什么区别吗?

java - Keytool 插件 Eclipse 不工作

java - 有没有办法在 JavaScript 代码中找到某个 Java 类的 "expect"实例?

scala - 为什么 Scala 模式匹配在类型匹配的 for 循环中不起作用?

Python无比较: should I use "is" or ==?