欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【java8新特性】Optional类

程序员文章站 2022-03-04 10:51:08
...

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

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

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

【java8新特性】Optional类

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);

}

【java8新特性】Optional类

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);
    }

【java8新特性】Optional类

用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);
    }

【java8新特性】Optional类