Optional 类是一个可以为null的容器对象,可以让我们快速定位NullPointException。

1.方法of()用于创建非空对象,该方法要求传入的参数不能为空,否则抛NullPointException,
我们直接就可以知道这个对象是空的

@Test
    public void test1() {
        Optional<Employee> optional = Optional.of(null);
        Employee employee = optional.get();
        System.out.println(employee);
    }

这里写图片描述

2.由于传入的参数可能为null,则可以用Optional的ofNullable()方法创建对象,如果参数为null,则创建一个空对象。

@Test
    public void test3() {
        Optional<Employee> optional = Optional.ofNullable(null);

        Employee employee = optional.orElseGet(()->new Employee() );

        System.out.println(employee);

}

这里写图片描述

3.需求:一个man可能会有一个女神,如果有女神则返回女神姓名,没有返回一个默认name

传统做法:

public String getGodnessName(Man man) {
        if (man != null) {
            Godness godness = man.getGodness();
            if (godness !=null) {
                return godness.getName();

            }
        }
        return "小离";
    }
@Test
    public void test5() {
        Man man = new Man();
        String godnessName = getGodnessName(man);
        System.out.println(godnessName);
    }

这里写图片描述

用Optional类来处理(代码清爽了一些)

public String getGodnessName2(Optional<NewMan> man) {
        return 
            man.orElse(new NewMan())//如果man是null则新创建一个对象
           .getGodness()
           .orElse(new Godness("小离"))//如果man没有女神则设置一个默认女神的名字
           .getName();
    }
@Test
    public void test5() {

        Optional<Godness> godness = Optional.ofNullable(new Godness("小妹"));
        Optional<NewMan> op = Optional.ofNullable(new NewMan(godness));
        String str = getGodnessName2(op);
        System.out.println(str);
    }

这里写图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐