簡體   English   中英

如何在 Java 8 中執行空檢查

[英]How to perform null check in java 8

如何在java 8中編寫以下代碼

List<String> names = service.serviceCall();

if(names != null) { // **how to do this null check with java 8**
    names.forEach(System.out::println);
}

你可以做:

Optional.ofNullable(names).orElse(Collections.emptyList()).forEach(System.out::println);

或者

Optional.ofNullable(names).ifPresent(n -> n.forEach(System.out::println));

或者

Stream.of(names)
    .filter(Objects::nonNull)
    .flatMap(Collection::stream)
    .forEach(System.out::println);

但不要。 看看你必須寫的所有額外的東西。

只需使用簡單的舊空檢查,就像您已經在代碼中一樣。

正如安迪·特納 (Andy Turner)答案所建議的那樣,最好在這里編寫一個簡單的空檢查。

Objects.nonNull

但是 Java 8 確實提供了一個小改進:用於空檢查的Objects實用程序類上的方法。

所以你的代碼會喜歡這個。

List<String> names = service.serviceCall();

if( Objects.nonNull( names ) ) 
{   
    names.forEach( System.out::println );
}

Objects.requireNonNullElseGet

在另一種方法Objects可如果適合您的情況返回替代對象。 例如,如果您的服務調用返回空列表,也許您應該替換一個空列表。 調用Objects.requireNonNullElseGet

傳遞的 lambda 以惰性方式處理,除非需要,否則不會執行。

List<String> names = 
        Objects.requireNonNullElseGet
        ( 
            service.serviceCall() , 
            () -> new ArrayList<>( 0 )  // In Java 9 and later, use `List.of()`.
        )
;
names.forEach( System.out::println );

暫無
暫無

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

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