orElseGet:如不雅值为空则调用指定的办法返回
- public T orElse(T other) {
- return value != null ? value : other;
- }
- public T orElseGet(Supplier<? extends T> other) {
- return value != null ? value : other.get();
- }
- public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
- if (value != null) {
- return value;
- } else {
- throw exceptionSupplier.get();
- }
- }
orElseThrow:如不雅值为空则直接抛出异常
一般我们应用orElse来取值,如不雅不存在返回默认值.
Java8带来的函数式编程特点对于习惯敕令式编程的法度榜样员来说照样有必定的┞废碍的,我们只有深刻懂得这些机制的方方面面才能应用自如。Null的处理在JAVA编程中是出了try catch之外的另一个头疼的问题,须要大年夜量的非空断定模板代码,法度榜样逻辑嵌套层次太深。尤其是对集合的应用,须要层层判空。
4)Optional的中心处理
filter,map,flatMap,这几个操作跟Stream的处理类似,只是要留意flatMap处理必须手动指定返回类型为Optional<U>,而map会主动将返回值包装成Optional.举个栗子,我们有商品很订单的构造:
- package model;
- import java.util.List;
- /**
- * @auth gongxufan
- * @Date 2017/10/23
- **/
- public class Goods {
- private String goodsName;
- private double price;
- private List<Order> orderList;
- public String getGoodsName() {
- return goodsName;
- }
- public void setGoodsName(String goodsName) {
- this.goodsName = goodsName;
- }
推荐阅读
2017年架构师最重要的48个小时 | 8折倒计时 摘要:越来越多的组织须要在数据中间/云之间移动数据,然则在迁徙过程中的一个关键风险点是停机。在2017年的营业持续性意识周这里,我欲望它能供>>>详细阅读
地址:http://www.17bianji.com/lsqh/38331.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示