欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Java如何判斷一個對象是否為空

 更新時間:2024年01月11日 11:00:21   作者:HBLOG  
我們在剛開始學習Java的時候,遇到過最多的異??隙ㄊ浅裘阎目罩羔槷惓#∟ullPointerException),可以說它陪伴了我們整個初學階段,那么如何優(yōu)雅的判斷一個對象是否為空并且減少空指針異常呢,

我們在剛開始學習Java的時候,遇到過最多的異??隙ㄊ浅裘阎?strong>空指針異常(NullPointerException),可以說它陪伴了我們整個初學階段。字符串、對象、集合等等一不留神就容易出現(xiàn)空指針異常! 那么如何優(yōu)雅的判斷一個對象是否為空并且減少空指針異常呢? 今天來介紹一個容器類——Optional

Optional介紹

Optional是一個容器類,它只有兩種情況:

  • 要么包含一個非空對象
  • 要么為空

它有助于編寫更健壯的代碼,以處理可能為空的值,而不必擔心空指針異常!

Optional用法

Optional的創(chuàng)建

Optional有以下兩種常見的創(chuàng)建方法:

  • Optional.of(T value):創(chuàng)建一個包含非空值的Optional,如果value為null,則拋出NullPointerException
  • Optional.ofNullable(T value):創(chuàng)建一個Optional,允許value為null

判斷Optional容器中是否包含對象

isPresent(): 返回一個布爾值,如果Optional容器中包含一個非空對象則返回true,否則返回false

獲取Optional容器的對象

  • get(): 如果Optional包含非空值,返回該值;否則拋出NoSuchElementException
  • orElse(T other): 如果Optional為空,返回指定的默認值other
  • orElseGet(Supplier<? extends T> other): 如果Optional為空,使用提供的Supplier函數(shù)生成默認值
  • orElseThrow(Supplier<? extends X> exceptionSupplier): 如果Optional為空,拋出由提供的Supplier函數(shù)生成的異常

過濾

filter(Predicate<? super T> predicate): 如果Optional包含非空值且滿足predicate條件,則返回當前Optional,否則返回一個空Optional。

映射

  • map(Function<? super T, ? extends U> mapper): 如果Optional包含非空值,應用mapper函數(shù)并返回新的Optional。
  • flatMap(Function<? super T, Optional> mapper): 類似于map,但允許mapper函數(shù)返回Optional。

Optional示例

假如我們有一個User類,可以使用Optional來處理可能為空的User對象。User類結構如下:

public class User {
    private String name;
    
    public User(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
}

示例:創(chuàng)建Optional

Optional userOptional = Optional.ofNullable(new User("張三"));

示例:判斷Optional是否包含對象

if (userOptional.isPresent()) {
    System.out.println("用戶存在:" + userOptional.get().getName());
} else {
    System.out.println("用戶不存在");
}

示例:獲取Optional容器的對象

User user = userOptional.orElse(new User("李四"));
System.out.println("User: " + user.getName());

示例:過濾

Optional<User> filteredUserOptional = userOptional.filter(u -> u.getName().startsWith("張"));
if (filteredUserOptional.isPresent()) {
    System.out.println("結果:" + filteredUserOptional.get().getName());
} else {
    System.out.println("未找到對應用戶");
}

示例:映射

Optional<String> userNameOptional = userOptional.map(User::getName);
userNameOptional.ifPresent(name -> System.out.println("用戶名為: " + name));

使用場景總結

  • 當你從某個方法返回一個值,但該值可能為空,而調用者需要明確知道值是否存在。
  • 在處理方法參數(shù)時,你可以用Optional來表示某個參數(shù)可以為空,以提醒調用者可能會傳入null。
  • 避免繁瑣的null檢查和條件語句,使代碼更簡潔和可讀!

以上就是詳解Java如何判斷一個對象是否為空的詳細內容,更多關于Java判斷對象是否為空的資料請關注腳本之家其它相關文章!

相關文章

  • SpringBoot打印啟動時異常堆棧信息詳解

    SpringBoot打印啟動時異常堆棧信息詳解

    在本篇文章里小編給大家整理的是關于SpringBoot打印啟動時異常堆棧信息,有需要的朋友們可以學習下。
    2019-11-11
  • 詳解記錄Java Log的幾種方式

    詳解記錄Java Log的幾種方式

    很多小伙伴不知道如何記錄日志,今天特地整理了本篇文章,文中有非常詳細的介紹及代碼示例,對小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • Java List集合排序實現(xiàn)方法解析

    Java List集合排序實現(xiàn)方法解析

    這篇文章主要介紹了Java List集合排序實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Tomcat+JDK安裝和配置教程

    Tomcat+JDK安裝和配置教程

    這篇文章主要為大家詳細介紹了Tomcat+JDK安裝和配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • IDEA 工程里 new不出來Vue文件的圖文解決方案

    IDEA 工程里 new不出來Vue文件的圖文解決方案

    這篇文章主要介紹了IDEA 工程里 new不出來Vue文件的解決方案,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • springboot實現(xiàn)發(fā)送QQ郵箱

    springboot實現(xiàn)發(fā)送QQ郵箱

    這篇文章主要為大家詳細介紹了springboot實現(xiàn)發(fā)送QQ郵箱,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • springboot?通過博途獲取plc點位的數(shù)據代碼實現(xiàn)

    springboot?通過博途獲取plc點位的數(shù)據代碼實現(xiàn)

    這篇文章主要介紹了springboot?通過博途獲取plc點位的數(shù)據的代碼實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Java實現(xiàn)暴力匹配算法

    Java實現(xiàn)暴力匹配算法

    暴力匹配算法是一種簡單的字符串匹配算法,本文主要介紹了Java實現(xiàn)暴力匹配算法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • 詳解獲取Spring MVC中所有RequestMapping以及對應方法和參數(shù)

    詳解獲取Spring MVC中所有RequestMapping以及對應方法和參數(shù)

    本篇文章主要介紹了詳解獲取Spring MVC中所有RequestMapping以及對應方法和參數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • mybatis plus 的動態(tài)表名的配置詳解

    mybatis plus 的動態(tài)表名的配置詳解

    這篇文章主要介紹了mybatis plus 的動態(tài)表名的配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09

最新評論