2016-03-16 83 views
0

我的印象Optional.ofNullable(response.getSubscriber()),也可確定物體響應爲空之下,但它不能java的可選檢查空

是否有更好的方法來檢查響應和response.getSubscriber是否存在?

public Subscriber generateSubscriber(SPRGetSubscriberResponse response) { 
     if (response != null) { 
      Optional<SPRSubscriber> option = Optional.ofNullable(response.getSubscriber()); 
      if (option.isPresent()) { 
       Subscriber subscriber = new Subscriber(); 
       //...copy members from response to subscriber 

       return subscriber; 
      } 
     } 
     return null; 
    } 
+2

爲什麼你不只是測試'如果(響應。 getSubscriber()== null)'? –

+0

@JernejK他想避免IF條件和額外的代碼,, – hagrawal

+0

我正在看[教程](http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html)和它好像你有一本教科書的例子。你是否嘗試調試,因爲代碼不是謊言。 –

回答

2

你在得到所有流暢的笨拙和沒有的方式混合條件語句和Optional。只使用基本的功能,沒有Optional

if (response != null && response.getSubscriber != null) 

在Groovy:

response?.subscriber // null-safe navigation to collapse your conditional 

與Java 8個善:

return Optional.ofNullable(response) 
    .map(SPRGetSubscriberResponse::getSubscriber) 
    .map(original -> { /* return the copied version */ }) 
    .orElse(null);