JDK8新特性,Optional工具类的简单实用场景

Optional

Optional类是Java8的新特性,是一个可以为null的容器对象

Optional就像一个壳子,里面包住了一个对象

使用方法描述
Optional.of(object)传递参数,如果of中的对象是null,就报空指针异常(用于创建optional对象)
Optional.ofNullable(object)允许ofNullable传递null对象(用于创建optional对象)
Optional.empty()返回空的Optional实例 (用于创建optional对象)
Optional.isPresent()判断Optional实例是否为空
Optional.orElse(Object)如果optional为空的话返回orElse中的对象
Optional.get()获取optional中的T对象
Optional.map()如果optional不为null,则执行map方法中的映射函数得到返回值。

案例一:替代多层if else嵌套

// 比如 一个数据有三层,我在取最里层的时候,要判断每一层的是否为空,这样就会出现大量if else嵌套
// 这个方法传入一个 map类型的对象叫 resultMap
// 如果resultMap为空,直接返回 orElse中的内容,如果map中取得值,有一步为空,那也返回orElse中的内容
String address = Optional.ofNullable(resultMap)
    .map( m -> (Map<String,Object>)m.get("user") ) 
    .map( user -> (Map<String,Object>)m.get("info") ) 
    .map( info->(Map<String,Object>)m.get("address")) 
	.orElse(null);
System.out.println(address);

//还有一个抛异常的, 为null的时候抛异常
Optional.ofNullable(resultMap)
    .map( m->(Map<String,Object>)m.get("user")) 
    .map( user->(Map<String,Object>)m.get("info")) 
    .map( info->(Map<String,Object>)m.get("address")) 
	.orElseThrow(() -> new Exception());

案例二:判断一个对象是否为空,若为空,则创建一个新对象

User user = null;
Optional.ofNullable(user).orElse(new User());

案例三:通过ifPresent()判断一个对象是否为空

// 返回ture false
Optional.ofNullable(user).isPresent();

// 不为空,进行一些操作
Optional.ofNullable(porder).ifPresent(s -> {
    param.put("porder", Integer.parseInt(s));
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值