2016-03-16 44 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);