当一个对象的覆盖equals方法可以obj在下面null时,如果是这样,是什么情况?
@Override
public boolean equals(Object obj) {
是的,equals()应该处理null,在这种情况下,它应该false按照以下文件中的说明返回Object.equals():
对于任何非空引用值
x,x.equals(null)应该返回false。
当然 if x is null x.equals(null)不会返回true,但它会抛出NullPointerException。如果您需要比较两个可能null的参考,请查看Objects.equals(Object, Object):
Objects.equals(x, x);
以上永远是true,即使x == null。
这是一种公共方法。只要调用者将空值传递给它,它就可以为空。你必须适当地处理这种情况。