我尝试创建一个允许在 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()
将两个空值视为“相等”。伪代码为:
- 如果两个参数都是
null
或者同一个对象,返回true
- 如果第一个参数为
null
,则返回false
- 返回第二个参数传递给第一个参数的
equals()
方法的结果
这意味着它是“空安全的”(尽管第一个参数的 equals()
方法的非空安全实现)。
关于java - Objects.equals 和 Object.equals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34486832/