java之Objects.nonNull用法代碼解讀
java之Objects.nonNull用法代碼
Objects.nonNull 是 Java 標(biāo)準(zhǔn)庫(kù)中的一個(gè)靜態(tài)方法,位于 java.util.Objects 類(lèi)中。
這個(gè)方法用于檢查給定的對(duì)象引用是否為非空(即不為 null)。
- 其基本用法如下:
public static boolean nonNull(Object obj) {
return obj != null;
}- 使用示例:
import java.util.Objects;
public class Example {
public void someMethod(String input) {
if (Objects.nonNull(input)) {
// 當(dāng)輸入不為 null 時(shí)執(zhí)行的操作
System.out.println("Input is not null, its value: " + input);
} else {
throw new IllegalArgumentException("Input cannot be null");
}
}
}
// 使用:
Example example = new Example();
String someString = "Hello";
example.someMethod(someString); // 如果 someString 不是 null,則會(huì)打印信息
// 或者在流操作中作為謂詞使用
List<String> list = ...; // 假設(shè)是一個(gè)字符串列表
list.stream()
.filter(Objects::nonNull)
.forEach(System.out::println); // 這將只打印列表中非 null 的元素注意:
Objects.nonNull()方法不會(huì)拋出異常,它只是簡(jiǎn)單地返回一個(gè)布爾值表示對(duì)象是否非空。- 若你需要在對(duì)象為 null 時(shí)拋出異常,應(yīng)使用
Objects.requireNonNull()方法,該方法會(huì)在傳入對(duì)象為 null 時(shí)拋出NullPointerException。
Objects.nonNull() 與 Objects.isNull()
- 對(duì)比:
| 傳統(tǒng)寫(xiě)法 | Objects 方法 | 適用場(chǎng)景 |
|---|---|---|
| if (user != null) | if (Objects.nonNull(user)) | 正向操作 (對(duì)象存在時(shí)才執(zhí)行邏輯) |
| if (user == null) | if (Objects.isNull(user)) | 反向操作 (對(duì)象為空時(shí)提供備用邏輯) |
- 在Stream流中使用例子:
List<String> names = userList.stream()
.filter(Objects::nonNull) // 過(guò)濾 null 用戶(hù)對(duì)象
.map(User::getName)
.collect(Collectors.toList());總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
WebSocket無(wú)法注入屬性的問(wèn)題及解決方案
這篇文章主要介紹了WebSocket無(wú)法注入屬性的問(wèn)題及解決方法,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09
淺析JavaWeb項(xiàng)目架構(gòu)之Redis分布式日志隊(duì)列
架構(gòu)、分布式、日志隊(duì)列,標(biāo)題自己都看著唬人,其實(shí)就是一個(gè)日志收集的功能,只不過(guò)中間加了一個(gè)Redis做消息隊(duì)列罷了。下面通過(guò)本文給大家分享JavaWeb項(xiàng)目架構(gòu)之Redis分布式日志隊(duì)列,感興趣的朋友一起看看吧2018-01-01
Java的鎖機(jī)制:synchronized和CAS詳解
這篇文章主要介紹了Java的鎖機(jī)制synchronized和CAS詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-09-09
SpringBoot中四種AOP實(shí)戰(zhàn)應(yīng)用場(chǎng)景及代碼實(shí)現(xiàn)
面向切面編程(AOP)是Spring框架的核心功能之一,它通過(guò)預(yù)編譯和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù),在SpringBoot應(yīng)用中,AOP能夠幫助我們優(yōu)雅地解決橫切關(guān)注點(diǎn)問(wèn)題,本文將介紹SpringBoot中4種AOP實(shí)戰(zhàn)應(yīng)用場(chǎng)景,需要的朋友可以參考下2025-05-05
Java實(shí)現(xiàn)兩人五子棋游戲(七) 屏幕提示信息
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)兩人五子棋游戲,屏幕提示游戲信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
兩種實(shí)現(xiàn)Java類(lèi)隔離加載的方法
這篇文章主要介紹了兩種實(shí)現(xiàn)Java類(lèi)隔離加載的方法,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-02-02

