• 高效 告别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的类库。

  • 相关阅读:
    CAS 之 集成RESTful API
    RSA客户端js加密服务器C#解密(含源码)
    Java实现文件的RSA和DES加密算法
    对称加密DES和TripleDES
    VCL消息处理机制
    10款你应该了解的开源安全工具
    一个登陆框引起的血案
    npm install -S -D -g 有什么区别
    共享软件中恶意代码插入技术研究
    GyoiThon:基于机器学习的渗透测试工具
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/12978066.html
Copyright © 2020-2023  润新知