我们平时开发时,经常会遇到对象比较是否相等的情况。
在Java中,A.equals(B)方法用于比较两个对象是否相等,当调用一个对象的 equals() 方法时,如果该对象是 null,则会抛出 NullPointerException 异常。
也就是说,我们在使用A.equals(B)这个方法的时候,如果A为null,则会抛出 NullPointerException 异常。
所以平常我们在开发时,经常会将确定绝对不会为null的值写在前面,例如 “张三”.equals(name) 。
而使用 Objects.equals(a, b) 的方式则不会抛出异常,因为 Objects.equals() 方法会自动处理 null 值。
因此,如果是在比较两个可能为 null 的对象时,使用 Objects.equals() 方法来避免 NullPointerException 异常。这也是编码规范中的推荐做法。
Objects.equals() 方法的实现原理如下:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
它甚至神奇到可以判断null和null是一致的,我觉得属实不错!