美文网首页Java 8
Optional 取代 null?

Optional 取代 null?

作者: e86dab508bc1 | 来源:发表于2019-04-09 23:45 被阅读0次

我们在平时编程的时候,遇到的一类Exception 要数 NullPointException, 所以我们很经常为了防止NPE, 会加入防御性的代码,使用验证是否是Null的判断语句,但是这一方面无形中也加大了代码的嵌套,而且这个也不是业务相关性的代码,有时候会加入多层嵌套,导致代码的臃肿,难以维护,影响阅读性,接下来我们就举一个实例来说明一下。

public class OptionalExample {
private static class OptionalTest{
    private String name;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

public static void main(String[] arg){

    OptionalTest optionalTest = new OptionalTest();

    System.out.println("The name is : " + optionalTest.getName().toUpperCase());


}
}

运行一下,会抛出NPE,因为optionalTest.getName 拿到的是一个Null值,再调用toUpperCase 时候会抛出NPE,那么接下来我们用Optional来进行一下改造。

int number = Optional.ofNullable(two)
            .flatMap(OptionalTestTwo::getCar)
            .map(x -> x.getCarNumber())
            .orElse(12);
    System.out.println(number);

Optional类的引入是为了解决代码中变量值缺失问题,更有效的预防代码中出现的不期而遇的空指针问题,而且能帮助你设计出更好的API,通过阅读方法就知道是否接受一个Optional类型的值。

相关文章

  • Optional 取代 null?

    我们在平时编程的时候,遇到的一类Exception 要数 NullPointException, 所以我们很经常...

  • 用Optional取代null

    创建Optional对象 Optional.empty():声明一个空Optional Optional.of()...

  • 用Optional取代null

    null引发的问题以及为什么要避免null引用 先看一个例子 意思也就是说获取一个人的车的保险公司的名称。可以看到...

  • 利用Optional取代null

    由于Optional未能实现Serializable接口,若使用了某些要求序列化的库或者框架,在域模型中使用Opt...

  • JDK8特性与使用手记

    新特性总览 lambda表达式 Stream操作数组 Optional取代null 简洁的并发编程 LocalDa...

  • Java8笔记(5)

    Java8笔记(5) 用 Optional 取代 null 如何为缺失的值建模 假设你需要处理下面这样的嵌套对象,...

  • java8-用Optional取代null

    Optional的主要作用:预防 Java 中著名的 NullPointerException 异常 NullPo...

  • Java8 用Optional取代null

    避免用null来表示变量的缺失! 带来的问题: java.util.Optional 在对象模型中使用Opt...

  • JDK8新特性之Optional

    Optional是什么 java.util.Optional Jdk8提供Optional,一个可以包含null值...

  • Guava工具集

    使用和避免null 1、创建Optional对象 1)创建一个空的Optional:Optional.empty(...

网友评论

    本文标题:Optional 取代 null?

    本文链接:https://www.haomeiwen.com/subject/kpswiqtx.html