java可选检查空值

时间:2016-03-16 03:22:58

标签: java optional

我的印象是Optional.ofNullable(response.getSubscriber())还可以确定对象响应是否为null,但它不能

有没有更好的方法来检查响应和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;
    }

1 个答案:

答案 0 :(得分: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);