首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objects.deepEquals方法的意义

Objects.deepEquals方法的意义
EN

Stack Overflow用户
提问于 2015-12-30 09:47:02
回答 2查看 8.8K关注 0票数 16

问题是关于静态方法Objects.deepEquals类(自Java 7以来):

代码语言:javascript
复制
public static boolean deepEquals(Object a, Object b) {
    if (a == b)
        return true;
    else if (a == null || b == null)
        return false;
    else
        return Arrays.deepEquals0(a, b);
}

正如它在javadoc中所说的,这种方法:

如果参数彼此之间深度相等,则返回true,否则返回false。

我不明白的是:比较的深度在哪里?正如我们在它的实现中所看到的,它只是进行引用比较,而在Arrays.deepEquals0(a, b)中,对于简单的ObjectObject参数,它只调用:eq = e1.equals(e2);。那么,在哪种意义上,深度等于两个对象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-30 09:53:02

如果您传递Array对象,则比较将非常深入。

对非数组对象的评估不会比使用equals时得到的更深。

所以深度与你的情况无关:

两个空值是非常相等的。如果两个参数都是数组(),则使用Arrays.deepEquals中的算法来确定相等性。否则,通过使用第一个参数的相等方法来确定相等。

引用自:

Object.deepEquals

票数 19
EN

Stack Overflow用户

发布于 2015-12-30 09:53:57

您可以参考:你的深深-为什么Arrays.deepEquals当我们有Arrays.equals

Arrays.deepEquals看起来真的很深 从源头上看,我们可以理解Arrays.deepEquals

  1. 循环通过输入数组,获取每一对
  2. 分析每对的类型
  3. 如果相同的判定逻辑是基本数组之一,则委托给重载的Arrays.equals之一。
  4. 如果是对象数组,则递归地委托给Arrays.deepEquals。
  5. 为任何其他对象调用相应的对象的相等
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34526939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档