java - Objects.equals 和 Object.equals

标签 java equals

我尝试创建一个允许在 Java 中使用类似元组的结构的元组类。元组中两个元素的一般类型分别是 X 和 Y。我尝试为此类覆盖正确的等号。

事情是,我知道 Object.equals 属于默认值,它仍然根据“==”之类的引用进行比较,所以我不太确定我可以使用它。我查看了 Objects ,其中有一个 equals() 。这个还是比较引用文献,还是比较内容?

很快就把return语句想象成这样:

return Objects.equals(compared.prev, this.prev) && Objects.equals(compared.next, this.next);

prev 和 next 是元组的元素。这行得通吗?

最佳答案

不同之处在于 Objects.equals() 将两个空值视为“相等”。伪代码为:

  1. 如果两个参数都是null或者同一个对象,返回true
  2. 如果第一个参数为null,则返回false
  3. 返回第二个参数传递给第一个参数的equals()方法的结果

这意味着它是“空安全的”(尽管第一个参数的 equals() 方法的非空安全实现)。

关于java - Objects.equals 和 Object.equals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34486832/

相关文章:

多个 equals 和 if 的 Java 哈希码实现

java - 使用 .equals() 比较两个字符串不起作用

java - 交换字符串的第一个和最后一个字母

java - 如何在eclipse中获取未保存的编辑器输入?

java - 向对等方发送 Hyperledger Fabric 的链码实例化请求时出现 OCI 运行时错误

Java String Equals()方法和多维数组

c# - 对象.等于 : everything is equal by default

java - JSTL - 比较字符串

java - 如何在 Eclipse 中使用 Jfreechart 绘制实时/动态值的图表

java - 基本 Java 数组 - 打印递增值的 "Pyramid"