高效 告别996,开启java高效编程之门 5-2实战Optional使用

1    重点:

1.1  本节demo中的Optional是java8中Optional不是guava中的(guava中也有Optional)

1.2  demo1三种创建Optional的方式(为空对象,非空对象,任意对象)

1.3  demo2使用Optional的方法(map,filter,flatMap,ifPresent特性)

1.4  demo3ofNullable方法dmeo(当Optional对象为空时不报错) 

2    demo1  之三种创建Optional的方式
/**
         *     1    三种创建Optional方式
         */
        //1.1   创建为空的Optonal对象
        Optional.empty();

        //1.2   创建非null值的Optional对象,如果为null编译期报错
        Optional.of("zhangyy");

        //1.3   使用任意值创建Optional对象,可以点进去ofNullable方法看看
        //Optional optional = Optional.ofNullable(null);
        Optional optional = Optional.ofNullable("zhangxiaoxi");

 

3    demo2  之Optional的使用方式
/**
         * 2    Optional的使用方式
         */
        //2.1   判断Optional是否引用缺失的方法(建议不使用)
        optional.isPresent();

        //2.2   当optional存在(optional对象非null)时执行
        // 类似方法 map filter flatMap
        optional.ifPresent(System.out::println);

        //2.3   当optional引用缺失时(optional对象为null)执行
        optional.orElse("引用缺失");
        optional.orElseGet(()->{
            System.out.println("自定义引用缺失");
            return "自定义引用缺失";
        });
        optional.orElseThrow(()->{
            return new RuntimeException("返回一个异常!");
        });
    }

 

4    demo3  之验证为null的情况(ofNullable不报错)

 demo:

/**
     * 测试stream 为null的情况
     * @param list
     */
    public static void stream(List<String> list){
        System.out.println("Favorite");
        //list.stream().forEach(System.out::println);
        Optional.ofNullable(list)
                //如果不为null,构建流
                .map(List::stream)
                //否则,构建出一个空的流
                .orElseGet(Stream::empty)
                .forEach(System.out::println);
    }

    public static void main(String [] args){
        stream(null);
    }

打印结果:

Favorite

Process finished with exit code 0

正是受到Guava的启发,Java8将Optiona类做为一,个新特性引入进Java8的类库。

猜你喜欢

转载自www.cnblogs.com/1446358788-qq/p/12978066.html