zoukankan      html  css  js  c++  java
  • 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的情况。
  • 相关阅读:
    lua math 库
    【转】Lua 操作系统库
    lua学习笔记(十三)
    lua学习笔记(十二)
    lua学习笔记(十一)
    lua学习笔记(十)
    lua学习笔记(九)
    lua学习笔记(八)
    lua学习笔记(七)
    lua学习笔记(六)
  • 原文地址:https://www.cnblogs.com/silenceshining/p/13917212.html
Copyright © 2011-2022 走看看