2017-10-16 115 views
1

我想這個傳統的Java示例代碼遷移到Java 8Java <Optional>對象爲空或對象的屬性爲空?

public String getUserSex(Person person) { 
    if(person != null) { 
     if(person.getSex() != null) { 
      return person.getSex(); 
     } 
    } 

    return null; 
} 

如何使用Optional這個遷移到Java 8?

+0

究竟什麼是你的問題? –

回答

0

如下您可以實現它:

public Optional<String> getUserSex(Person person) { 
    if(person != null) { 
     return Optional.ofNullable(person.getSex()); 
    } 
    return Option.empty(); 
} 

在這種情況下getUserSex調用者總是會得到一個類型Optional的,因此調用方不能執行null檢查。

相反,調用者可以詢問可選的值是否存在。

getUserSex(new Person()).isPresent() 
+1

您應該使用Optional.ofNullable(),因爲getSex方法可以像給出的代碼所示那樣返回null。 – CodeMatrix