当一个对象的覆盖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
。
这是一种公共方法。只要调用者将空值传递给它,它就可以为空。你必须适当地处理这种情况。