zoukankan      html  css  js  c++  java
  • java.util.Objects.isNull vs object == null 之Objects类的介绍

    Java7引入了java.util.Objects类,Objects提供了很多工具类方法,其中包括isNull方法(Java8引入了isNull方法),那么java.util.Objects.isNull 与 object== null有何区别?为什么会引入java.util.Objects.isNull方法?

    1, 直接对比源代码
    public static boolean isNull(Object obj) {
    return obj == null;
    }
    1
    2
    3
    从源码上看,两者是一致的。


    参考:https://docs.oracle.com/javase/7/docs/api/java/util/Objects.html
    https://docs.oracle.com/javase/8/docs/api/java/util/Objects.html

    2, 存在的原因
    既然一样,为什么需要isNull方法了?
    我们可以发现java docs上注释了:
    之所以有isNull方法是因为* @apiNote This method exists to be used as a
    * {@link java.util.function.Predicate}, {@code filter(Objects::isNull)}
    Java8中引入了lambda,因此出现很多这样filter(Objects::isNull)这样的写法,显然比filter(x -> x == null). 方法更直观一些。

    3,Objects还有哪些方法?
    我们可以发现Objects提供了很多静态工具类。下面简要介绍其中几个

    方法 说明
    compare(T a, T b, Comparator c) 比较两个对象,如果两个对象完全相同,返回0, 否则返回c.compare(a, b)
    equals(Object a, Object b) 如果两个参数彼此相等,返回true,否则false
    toString(Object o) 如果参数非null,返回参数的toString结果。如果参数为null,返回字符串”null”
    其余方法参考https://docs.oracle.com/javase/8/docs/api/java/util/Objects.html

    4, 示例用法
    代码非常简单,直接使用 Objects.isNull(xxx) 或者Objects::nonNull

    package com.yq.helloworld;

    import java.util.Arrays;
    import java.util.List;
    import java.util.Objects;
    import java.util.stream.Collectors;

    /**
    * @author EricYang
    * @version 2018/8/18 23:22
    */
    public class ObjectsDemo {
    public static void main(String[] args) {
    String str1 = "str";
    System.out.println("str1 is null? " + Objects.isNull(str1));

    List<String> list = Arrays.asList("a", "b", null, null);
    List<String> list2 = list.stream()
    .filter(Objects::nonNull)
    .collect(Collectors.toList());
    System.out.println(list2);
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    运行结果
    str1 is null? false
    [a, b]
    ————————————————
    版权声明:本文为CSDN博主「russle」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/russle/article/details/81814398

  • 相关阅读:
    Web前端开发工程师编程能力飞升之路
    commonJSAMDCMD
    js正则替换十六进制
    JS获取粘贴内容
    ajax跨域访问总结
    需要坚持,能写出自己满意的内容
    【新年献词】我们是南方周末,我们三十而立
    iOS: 动态更改 backBarButtonItem 的 title
    iOS: 计算 UIWebView 的内容高度
    iOS: 在键盘之上显示一个 View
  • 原文地址:https://www.cnblogs.com/shoshana-kong/p/14985442.html
Copyright © 2011-2022 走看看