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
