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 风格的方法?
最佳答案
不幸的是,您正在寻找的ifPresentOrElse
方法will be added仅在 JDK-9 中。目前您可以在项目中编写自己的静态方法:
public static <T> void ifPresentOrElse(Optional<T> optional,
Consumer<? super T> action, Runnable emptyAction) {
if (optional.isPresent()) {
action.accept(optional.get());
} else {
emptyAction.run();
}
}
然后像这样使用:
Optional<Order> optional = Optional.ofNullable(orderBean.getOrder(id));
ifPresentOrElse(optional, s -> {
s.setStatus(true);
pm.persist(s);
}, () -> logger.warning("Order is null"));
在 Java-9 中会更容易:
optional.ifPresentOrElse(s -> {
s.setStatus(true);
pm.persist(s);
}, () -> logger.warning("Order is null"));
关于java - 如果不为空 - java 8 风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306530/