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指针异常.

猜你喜欢

转载自www.cnblogs.com/trekxu/p/9496251.html
004