Java8 Optional 示例

2021-06-10  本文已影响0人  写代码的杰西
import lombok.Data;

import java.util.Optional;

public class OptionalTest {
    public static void main(String[] args) {
        Person person = null;
        //会抛出空指针异常
//        Optional<Person> optional1 = Optional.of(person);
        //可以接受空对象不会抛出异常
        Optional<Person> optional2 = Optional.ofNullable(person);
        //是否存在
        System.out.println(optional2.isPresent());
        //orelse 不存在的话就怎么做
        person = optional2.orElse(new Person());
        //or else get 接受一个函数接口
        optional2.orElseGet(Person::new);
        //or else 无论如何都会创建一个新对象。 or else get 则是在需要时才会创建
        //----
        //get方法 获取这个值 不存在时会抛出空指针异常
//        Person person1 = optional2.get();
        //map 方法 把值转换为另一个值
        String name = optional2.map(Person::getName).orElse("default name");
        System.out.println(name);
        //filter 方法 判断在不在条件内
        person.setAge(10);
        Optional<Person> optional3 = Optional.ofNullable(person);
        boolean isLt20 = optional3.map(Person::getAge).filter(a -> a < 20).filter(a->a>5).isPresent();
        System.out.println("is less than 20:"+isLt20);
    }
}

@Data
class Person{
    private String name;
    private Integer age;
}
上一篇 下一篇

猜你喜欢

热点阅读