[英]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.