平等应该是对称的,对吧?
Object someObject = new Object();
Object NULL = null;
NULL.equals(someObject) => NullPointerException
someObject.equals(NULL) => false不让第二个表单抛出NullPointerException的理由是什么
发布于 2011-07-14 18:03:11
在理论意义上,平等当然被定义为对称,但它也完全没有定义在不存在的对象上( null代表的是什么)。
因此,任何适用于null的行为都同样有效。它可以归还一只活的兔子,但仍然不违背平等的理论定义。
在这种情况下,代表Java的设计者进行调用等于等于应该抛出一个NullPointerException是一个相当合理的实现决定,因为这与调用空值上的任何其他方法是一致的。
发布于 2011-07-14 17:59:15
在第一种情况下,equals()方法不会抛出NPE,所以您不能提出这个论点。对称性是相等()方法的契约的一部分。
发布于 2011-07-14 17:59:49
因为在第二种情况下,您没有访问null对象的方法。不平衡的不是平等的概念,而是你是如何获得它的。
https://stackoverflow.com/questions/6697774
复制相似问题