如果不是null - java 8样式 [英] If not null - java 8 style
本文介绍了如果不是null - java 8样式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Java 8提供可选
类。
Java 8 presents Optional
class.
之前(Java 7):
Before (Java 7):
Order order = orderBean.getOrder(id);
if (order != null) {
order.setStatus(true);
pm.persist(order);
} else {
logger.warning("Order is null");
}
所以Java 8风格:
So on Java 8 style:
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");
}
使用可选$ c是否正确$ c>在这种情况下?任何人都可以在Java 8风格中提出更方便的方法吗?
Is it correct to use Optional
in this case? Can anyone propose a more convenient way in Java 8 style?
推荐答案
不幸的是, ifPresentOrElse
您正在寻找的方法仅在JDK-9中添加。目前,您可以在项目中编写自己的静态方法:
Unfortunately, the ifPresentOrElse
method you're looking for will be added only in JDK-9. Currently you can write your own static method in your project:
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中它会更容易:
In Java-9 it would be easier:
optional.ifPresentOrElse(s -> {
s.setStatus(true);
pm.persist(s);
}, () -> logger.warning("Order is null"));
这篇关于如果不是null - java 8样式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文