簡體   English   中英

用於檢查輸入參數的Java Optionals

[英]Java Optionals to check input parameters

我正在使用方法頂部的java樣板檢查輸入參數:

public static Boolean filesExist(String file1, String file2, String file3 ... ) {
    if (file1 == null || file2 == null || file3 == null ||...) {
        throw new IllegalArgumentException();
    }
    if (another_param == null) {
        throw new NullPointerException();
    }
}

但是,我正在閱讀Java 8的可選項,並注意到我們可以做這樣的事情:

Optional.ofNullable(file1).orElseThrow(IllegalArgumentException::new);
Optional.ofNullable(file2).orElseThrow(IllegalArgumentException::new);
Optional.ofNullable(another_param).orElseThrow(NullPointerException::new);
...

所以我的問題是第二種方式是否有任何缺點,我覺得它對我來說看起來更清潔。

對於輸入驗證,請改用Objects.requireNonNull

public static Boolean filesExist(String file1, String file2, String file3 ... ) {
    Objects.requireNonNull(file1);
    Objects.requireNonNull(file2, "custom message");   
}

它更簡潔,更清晰地傳達意圖,不會創建額外的Optional對象。 但它會拋出NullPointerException

這樣做沒有任何缺點,代碼可以正常工作,但引入了Optional以達到不同的目的。例如,您可以在界面中的方法簽名中使用Optional,以便清楚地告知您的客戶端您的方法返回的值是“可選”。這樣您的客戶就不必進行猜測工作。

不,做第二種方式沒有任何缺點。 兩者都做同樣的事情,但以不同的方式。 Optional是Java 8中添加的新功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM