zoukankan      html  css  js  c++  java
  • 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指针异常.

  • 相关阅读:
    位向量法、二进制法枚举子集
    jfinal 下载文件时重命名
    Java程序员开发参考资源
    (二)Hive1.2.2
    (一)Hive1.2.2
    YARN资源调度框架
    MapReduce并行编程模型
    HDFS 分布式文件系统
    Kafka
    观察者模式
  • 原文地址:https://www.cnblogs.com/trekxu/p/9496251.html
Copyright © 2011-2022 走看看