美文网首页基础知识
基于JDK8中Optional写出可读性高的代码

基于JDK8中Optional写出可读性高的代码

作者: 阿里加多 | 来源:发表于2020-06-06 14:02 被阅读0次

一、前言

JDK8中引入了函数式编程,大大提高了我们编写代码的可读性,其中Optional则是为了避免NPE而生,下面我们就来看看它是如何提高代码可读性的。

二、Optional 使用

假设我们代码里面下面DO对象:

 static class Wheel {
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    private String brand;
}
 static class Car {
    public Wheel getWheel() {
        return wheel;
    }

    public void setWheel(Wheel wheel) {
        this.wheel = wheel;
    }
    private Wheel wheel;
}

 static class Person {
    public Car getCar() {
        return Car;
    }

    public void setCar(Car Car) {
        this.Car = Car;
    }

    private Car Car;
}

在不用Optional时候,如果我们想获取Person内嵌对象Wheel中的brand属性变量的值,在考虑避免NPE的情况下,代码可能如下:

String brand = null;
if (null != person){
    if (null != person.getCar()){
        if (null != person.getCar().getWheel()){
             brand = person.getCar().getWheel().getBrand();
        }
    }
}

如上是典型的箭头型代码,写起来比较琐碎,并且可读性不是很高。下面看使用Optional改造后的代码:

 brand = Optional.ofNullable(person) //转换为Optional进行包裹
        .map(p -> p.getCar()) //获取Car对象
        .map(car -> car.getWheel()) //获取Wheel对象
        .map(wheel -> wheel.getBrand()) //获取brand
        .orElse("玛莎拉蒂"); //如果中间有对象为null,则返回默认值"玛莎拉蒂"

如上代码,经过改造后,代码的可读性得到了提高,而写代码的成本却大大降低。上面使用Optional后,无论person为null,或者其内部的car为null,或者wheel对象为null,都不会出现NPE,而是会返回默认的“玛莎拉蒂”。

三、总结

善用工具,可以解放生产力,提高代码可读性,提高代码稳定性,何乐而不为那?最后,之前然也要知其所以然,Optional内部如何实现的那?大家可以翻看其代码看看,其实很简单。

更多技术分享,请扫描关注微信公众号:

file

相关文章

  • 基于JDK8中Optional写出可读性高的代码

    一、前言 JDK8中引入了函数式编程,大大提高了我们编写代码的可读性,其中Optional则是为了避免NPE而生,...

  • 前端之路

    把握代码质量,写出优雅,可读性高,易维护,符合开放-封闭原则的代码了解掌握javascript常用的设计模式,并能...

  • JDK8新特性之Optional

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

  • JAVA Optional类

    jdk8 [理解、学习与使用 Java 中的 Optional] https://www.oschina.net/...

  • 教你写出可读性高的Python代码

    如果有人问起 Python 程序员他们最喜欢 Python 哪一点,他们一定会提到 Python 的高可读性。确实...

  • JDK8-Optional

    Optional是JDK8中提供用于包含未知对象的工具类,即可以利用Optional包装对象来避免繁琐的空指针检查...

  • Java使用Optional与Stream来取代if判空逻辑(J

    Java使用Optional与Stream来取代if判空逻辑(JDK8以上) 通过本文你可以用非常简短的代码替代业...

  • JDK8新特性介绍

    JDK8新特性介绍 JDK8新特性:​ 1,Lambda表达式​ 2,新的日期API​ 3,引入Optional​...

  • java8 -Optional

    厌倦了空指针异常? 考虑使用Java SE 8的Optional!使代码更具可读性并使得免受空指针异常的影响。有人...

  • 跳出for循环的坑

    Python 语言学习成本低,写出来很像伪代码,可读性高,等等有很多显而易见的优点。相比于其他语言,Python ...

网友评论

    本文标题:基于JDK8中Optional写出可读性高的代码

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