问题是关于静态方法Objects.deepEquals类(自Java 7以来):
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)中,对于简单的Object和Object参数,它只调用:eq = e1.equals(e2);。那么,在哪种意义上,深度等于两个对象?
发布于 2015-12-30 09:53:02
如果您传递Array对象,则比较将非常深入。
对非数组对象的评估不会比使用equals时得到的更深。
所以深度与你的情况无关:
两个空值是非常相等的。如果两个参数都是数组(),则使用Arrays.deepEquals中的算法来确定相等性。否则,通过使用第一个参数的相等方法来确定相等。
引用自:
发布于 2015-12-30 09:53:57
您可以参考:你的深深-为什么Arrays.deepEquals当我们有Arrays.equals
Arrays.deepEquals看起来真的很深 从源头上看,我们可以理解Arrays.deepEquals
https://stackoverflow.com/questions/34526939
复制相似问题