0
是否可以測試Optional
並返回1)正在測試的實例的子字段(或方法)或2)如果正在測試的實例是null空值?使用java.util.Optional爲可選類型的子字段返回空值
下面是一個例子(沒有編譯):
public static void main(String[] args) {
A a1 = null;
LocalDate a_date_field = Optional.ofNullable(a1).orElse(???).date; // <--- I need this line ...
LocalDate a_date_field = a1 == null? null : a1.date; // <---- ... to work like this line
}
static class A {
LocalDate date = LocalDate.now();
}
是的,你可以用一個新的實例提供Optional::orElse()
:
LocalDate a_date_field = Optional.ofNullable(a1).orElse(new A()).date;
但是,這僅僅是不正確。由於a
爲空,因此a_date_field
也應該爲空。
與null
供應領域顯然是行不通的:
String afield = Optional.ofNullable(a1).orElse(null).field;
此拋出NPE。
這可能與Optional
?