• 004 Optional


    一 . 概述

      在我们之前的应用之中,我们常常需要面临的一个问题就是面对各种出现null的情况.

      比如我们的方法的参数是否为null,我们的方法的返回值是否是null.

      我们常见的一种情景就是忘记掉这些特殊的情况,这会导致我们的应用在特殊的情况下挂掉.

      JDK吸取了guava之中的傻瓜式防护的策略,让程序员必须对null进行处理,这样的好处就是程序员在代码的上下文之中常常被提醒需要对null进行处理,这样就能更好的避免掉null引起的问题.


    二 . Optional类

      我们首先看看我们如何创建一个Optional对象.

        @Test
        public void test1() {
            //创建Optional对象
            
            // 使用of方法创建一个Optional对象
            Optional<String> op = Optional.of("trek");
            
            // 如果我们使用null 创建一个对象,那么立马就会得到一个空指针异常
            //op = Optional.<String>of(null);
            
            //我们更为常见的做法就是:这样我们直接就能获取到一个null的Optional对象
            op = Optional.empty();
            
            //当我们也无法确定是否为null的时候,我们可以按照下面的API创建Optional对象
            op = Optional.<String>ofNullable(null);
        }

    当我们学完上面的API之后,如果我们需要创建自己的API模块的时候,我们可以将方法的返回值变成Optional类型,这样使用者在使用的时候,就自动提示可能需要对null进行一定的处理,

      在这样的傻瓜式防护的原则下面,我们就能尽可能的减少空指针的出现.


    三 .从Optional之中获取值

    @Test
        public void test2() {
            //正常的情况下
            Optional<String> op = Optional.of("trek");
            String str = op.get();
            System.out.println(str);
            
            //如果含有null
            op = Optional.ofNullable(null);
            String str1 = op.get(); // 此时就会直接抛出一个异常
            System.out.println(str1);
        }
        @Test
        public void test3() {
            Optional<String> op = Optional.of("trek");
            op.ifPresent(System.out::println);
            op = Optional.ofNullable(null);
            op.ifPresent(System.out::println);
        }

    我们可以使用ifPresent()方法让用户显示的操作Optional对象,这样用户就会知道,我只会在非null的情况下使用这个代码块,而不是完成无脑的使用造成null指针异常.

  • 相关阅读:
    iis 5.0 不能运行 asp.net 的 原因
    股票在线讨论
    adsl 加 路由器 网关不能上网的 原因
    汽车英语
    势与子的辩证法
    中国上海的黑心培训学校
    excel 里的 图表的使用
    带宽 下载速度 比特 率 换算 速度
    硬盘分区表修复秘籍
    Bootstrap a标签的单击时停止传播事件
  • 原文地址:https://www.cnblogs.com/trekxu/p/9496251.html
Copyright © 2020-2023  润新知