Java ifPresent 方法

Java ifPresent 方法是 Java 8 新添加的一個方法,用於檢查一個 Optional 對象是否包含了非 null 的值。在進行一些操作之前,你需要確定這個 Optional 對象確實包含值。如果包含值,就可以用 ifPresent 方法來對值進行一些操作。下面將詳細介紹這個方法的用法,以及適合的場景。

一、常見用途

一般來說,當使用 Optional 類型時,我們會編寫一些輔助類來進行檢查並進行操作。但是,如果嘗試直接在 Optional 對象上進行操作,可能會導致類型不匹配或者 NPE 等問題。

ifPresent() 方法就能夠解決這類問題。它能夠充分利用 lambda 表達式的特性,通過 Optional 對象進行操作。

二、代碼示例

下面是一個簡單的示例,用於展示 ifPresent() 方法的用法。


import java.util.Optional;

public class Main {
    public static void main(String[] args) {
        Optional<String> fullName = Optional.ofNullable(null);
        System.out.println("Full Name is set? : "+fullName.isPresent());

        System.out.println("Full Name: "+fullName.orElseGet(()-> "[none]"));

        fullName.ifPresent(System.out::println);
    }
}

運行結果如下:


Full Name is set? : false
Full Name: [none]

輸出結果中,我們可以看到 ifPresent() 只有當前 Optional 對象非 null 的時候才會進行操作。

三、ifPresent 方法的參數

ifPresent() 方法的參數是一個函數介面,這個函數最多接受一個參數,返回值類型是void。

如果調用 ifPresent() 方法時,Optional 對象包含非 null 的值,那麼這個函數介面中的方法就會被調用。具體來說,這個 函數介面 會將 Optional 對象中的值作為參數傳遞給這個函數。

如果 Optional 對象中的值是一個對象,而函數介面需要一個基本類型,那麼 Optional 對象自動的使用了裝箱機制,將其裝箱為一個對象。

四、小結

總之,ifPresent() 方法是 Java 中多重值作為 API 的一部分,有助於使代碼更加規範和易於維護。如果在開發過程中遇到 Optional 對象的操作問題,使用 ifPresent 可隨時判斷 Optional 對象是否有值,避免出現 NPE 異常。

然而,由於 Optional 沒有提供公共介面,如果對於 ifPresent() 方法並不熟悉,可能會給你帶來一些困惑。因此,在使用 Optional 相關 API 的過程中,一定要加強對這些函數的掌握,幫助你更好地了解代碼。

原創文章,作者:HTFC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/135883.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HTFC的頭像HTFC
上一篇 2024-10-04 00:15
下一篇 2024-10-04 00:15

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29

發表回復

登錄後才能評論