Objects.equals和Object.equals

jfc*_*ohn 31 java equals

我尝试创建一个允许Java中类似元组的结构的元组类.元组中两个元素的一般类型分别是X和Y. 我试图覆盖这个类的正确等于.

事实是,我知道Object.equals是默认的,它仍然会根据像"=="这样的引用进行比较,所以我不太确定我可以使用它.我查看了对象,其中有一个equals().这个仍然可以在引用上进行比较,还是在内容上进行比较?

快速想象返回语句如下:

return Objects.equals(compared.prev, this.prev) && Objects.equals(compared.next, this.next);
Run Code Online (Sandbox Code Playgroud)

prev和next的元素是元组的元素.这会有用吗?

Boh*_*ian 56

不同之处在于Objects.equals()认为两个零点是"相等的".伪代码是:

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

这意味着它是"null safe"(equals()尽管第一个参数的方法是非null安全的实现).

  • 第2点记录错误.代码是:`return(a == b)|| (a!= null && a.equals(b));`所以它实际上是*如果**first**参数是`null`则返回`false`*.如果第二个是`null`,则使用`null`参数调用`equals`.如果你已经实现了`equals`错误,那可能会引起人们的兴趣,这取决于`Objects.equals`一个null,就像我一样. (2认同)