【发布时间】:2015-08-31 18:16:55
【问题描述】:
Java 8 提供 Optional 类。
之前(Java 7):
Order order = orderBean.getOrder(id);
if (order != null) {
order.setStatus(true);
pm.persist(order);
} else {
logger.warning("Order is null");
}
Java 8 风格:
Optional<Order> optional = Optional.ofNullable(orderBean.getOrder(id));
optional.ifPresent( s -> {
s.setStatus(true);
pm.persist(s);
//Can we return from method in this place (not from lambda) ???
});
//So if return take place above, we can avoid if (!optional.isPresent) check
if (!optional.isPresent) {
logger.warning("Order is null");
}
在这种情况下使用Optional 是否正确?任何人都可以提出一种更方便的 Java 8 风格方式吗?
【问题讨论】:
-
这种方法效率低,但更简洁,您可以在try块中获取Optional中的元素并捕获NoSuchElementException异常。
标签: java lambda java-8 optional