是时候啦!用Optional取代null!

是时候啦!用Optional取代null!

1.Optional介绍

Optional是Jdk1.8提供的一个新类,希望可以通过该类的引入解决令人烦躁的null判断问题,非常好用。

该类有点类似于包装类,将要操作的Java类封装到该类的对象里面,同时将一些常用的判断逻辑封装为成员方法,结合lambda语法,实现比较优雅的链式调用。

  1. 构建API:构建一个Optional对象;方法有:empty()of()ofNullable()
  2. 获取API:获取Optional对象里包装的值;方法有:get()orElse()orElseGet()orElseThrow()
  3. 转换API:将Optional对象里包装的值转换成一个新的值;方法有:map()flatMap()
  4. 判断API:对Optional对象里包装的值做一些逻辑判断;方法有:filter()isPresent()ifPresent()

image-20210609204728510

2.构建类

简单准备一个Java类

package com.hanpang.model;
import lombok.*;
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class User {
   
    private String username;
    private String sex;
    private Integer age;
}
复制代码

创建Optional对象方式:

 @Test
public void buildOptionalTest(){
   
    // 1.构建一个value为null的optional对象;
    Optional<User> userEmptyOpt = Optional.empty();//“空”Optional对象

    // 2.构建一个value不可以为null的optional对象,如果of()的入参为null会报空指针异常;
    //Optional<User> userNullOpt = Optional.of(null);//运行报NullPointerException,不用调用属性的时候才报错
    Optional<User> userOpt = Optional.of(new User("唐僧","男",18));

    // 3.构建一个value可以为null的optional对象
    Optional<User> userNullOpt = Optional.ofNullable(null);

    System.out.println("Optional 空对象");
    System.out.println(userEmptyOpt);

    System.out.println("Optional of对象必须存在,不然空指针异常");
    System.out.println(userOpt);

    System.out.println("Optional ofNullable,不存在返回empty()");
    System.out.println(userNullOpt);

}
复制代码
Optional 空对象
Optional.empty
Optional of 对象必须存在,不然空指针异常
Optional[User(username=唐僧, sex=, age=18)]
Optional ofNullable,不存在返回empty()
Optional.empty
复制代码

3.获取类

 @Test
public void getOptionalTest(){
   
    Optional<User> userEmptyOpt = Optional.empty();

    Optional<User> userOpt = Optional.of(new User(<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值