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

Java8-Optional简单用法

程序员文章站 2022-06-07 19:51:44
...

Optional:

这是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。
public class OptionalTest {

    private String name;
    private int age;
    private boolean sex;

    public  OptionalTest(String name, int age, boolean sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public static void main(String[] args) {
        OptionalTest optionalTest = new OptionalTest("lihua", 23, true);
        OptionalTest optionalTesting = null;
        //of 把指定的值封装为Optional对象,如果指定的值为null,则抛出NullPointerException
        Optional<OptionalTest> optionalTest1 = Optional.of(optionalTest);
        System.out.println(optionalTest1.get());

        //empty 创建一个空的Optional对象
        Optional<Object> empty = Optional.empty();
        System.out.println(empty);

        //ofNullable 把指定的值封装为Optional对象,如果指定的值为null,则创建一个空的Optional 
        对象
        Optional<Object> o = Optional.ofNullable(null);
        /*System.out.println(o.get());*/

        //orElse  如果创建的Optional中有值存在,则返回此值,否则返回一个默认值
        Object o1 = o.orElse(optionalTest);
        System.out.println(o1);

        //orElseGet 如果创建的Optional中有值存在,则返回此值,否则返回一个由Supplier接口生成的 
        值
        Object orElseGet = o.orElseGet(() -> new OptionalTest("lisi", 25, true));
        System.out.println(orElseGet);

        //filter 如果创建的Optional中的值满足filter中的条件,则返回包含该值的Optional对象,否 
        则返回一个空的Optional对象
        Optional<OptionalTest> filter = optionalTest1.filter(x -> x.sex == true);
        System.out.println(filter.get());

        //map 如果创建的Optional中的值存在,对该值执行提供的Function函数调用
        String map = optionalTest1.map(x -> x.name.toUpperCase()).orElse("失败了");
        System.out.println(map);

        //flagMap 如果创建的Optional中的值存在,就对该值执行提供的Function函数调用,返回一个 
        Optional类型的值,否则就返回一个空的Optional对象
        Optional<Object> o2 = Optional.ofNullable(optionalTesting).flatMap(e -> 
        Optional.empty());
        System.out.println("flatMap..."+o2.isPresent());

        //ifPresent 如果创建的Optional中的值存在,则执行该方法的调用,否则什么也不做
        optionalTest1.ifPresent(x-> System.out.println("ifPresent..." + x));
    }

    @Override
    public String toString() {
        return "OptionalTest{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                '}';
    }
}
OptionalTest{name='lihua', age=23, sex=true}
OptionalTest{name='lihua', age=23, sex=true}
OptionalTest{name='lisi', age=25, sex=true}
OptionalTest{name='lihua', age=23, sex=true}
LIHUA
flatMap...false
ifPresent...OptionalTest{name='lihua', age=23, sex=true}

 

相关标签: Java8 optional