Objects.equals判空处理

Objects.equals判空处理语法糖

先看一个例子:

package demo;

import java.util.Objects;

public class objectsUtilDemo {

    public static void main(String[] args) {
        Object o1 = new Object();
        Object o2 = null;
        System.out.println(o1.equals(o2));
        System.out.println(Objects.equals(o1, o2));
        System.out.println(o2.equals(o1));
    }
}

打印结果如下:

false
false
Exception in thread "main" java.lang.NullPointerException
	at demo.objectsUtilDemo.main(objectsUtilDemo.java:12)

第12行的空指针异常其实是个很明显的错误,但在实际开发中很容易出现,因为像o2这个对象很可能是经过复杂处理的返回(比如是一个方法的返回值,或者某个第三方库的方法值),不是像例子中这么明显,于是就很容器忽略null对象调用equals方法肯定空指针异常的问题。

而Objects.equals就提供了一个判空的封装(语法糖),来让我们不必考虑o2以及o1是否为空,直接返回是否相等。看下源码:

 public static boolean equals(Object a, Object b) {
        return (a == b) || (a != null && a.equals(b));
    }

非常简短优雅:

  • a==b,a和b都可以为null;
  • a != null && a.equals(b) 排除了a为null的情况。
原文地址:https://www.cnblogs.com/silenceshining/p/13917212.html