Optional他是一个被final修饰的具体的类,我们一般拿它做一些对空(null)的判定。

请直接查看demo:

package java8.optional;

import java.util.Optional;

/**
 * jdk1.8 容器类
 */
public class OptionalDemo {
    public static void main(String[] args) throws Exception {


        /**
         *   创建方式
         */
        //创建一个为null的optional
        Optional.empty();
        //创建一个不能为null的Optional
        Optional.of(new Object());
        //创建一个可能为null的Optional   如果为null 返回一个null的optional
        Optional.ofNullable(new Object());

        /**
         * 通用方法
         */
        Optional<String> bin = Optional.of("bin");

        // isPresent 有值true没有值返回为false
        System.out.println(bin.isPresent());

        //获取option中的内容
        System.out.println(bin.get());

        //如果有值就执行里面的方法如果没有就什么都不做
        bin.ifPresent(System.out::println);

        //如果有值返回值  如果没有值  返回test
        System.out.println(bin.orElse("test"));

        //如果有值返回值  如果没有值新建值 进行返回
        System.out.println(bin.orElseGet(() -> "default"));

        //如果存在值则返回值  不存存在抛出自定义的异常信息
        System.out.println(bin.orElseThrow(Exception::new));


        //  根据操作重新创建optional
        Optional<String> optional = bin.map((value) -> value.toUpperCase());
        System.out.println(optional.get());

        //  根据操作重新创建optional
        Optional<String> optional1 = bin.flatMap((value) -> Optional.of(value.toUpperCase() + "faltMap"));
        System.out.println(optional1.get());

        //filter
        final Optional<String> s = bin.filter((value) -> value.length() > 3);
        System.out.println(s.orElse("长度小于3"));
    }
}

 


版权声明:本文为qq_41446768原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_41446768/article/details/88991904