java中Optional的正确使用方法

2019-11-18  本文已影响0人  昆猪IMK

java8 引入了Optional类,让我们可以以一种更加优雅的方式处理代码里的各种null值,但如果只是用Optional的isPresent()方法来代替原来代码中的null判断的话,其实和原来的写法也没有太大的区别,代码依然臃肿,也依然不利于阅读。
实际上除了isPresent()之外,optional提供的map(), orElse(), orElseGet()等方法才是Optinal真正的强大之处,下面的代码组合使用了map()和orElse()方法来处理null值,看下是不是比用各种if-else来判断null值优雅多了呢。

import java.util.Optional;

public class TestOptional {

    public static void main(String[] args) {
        Entityt1 e1 = new Entityt1();
        //        Entityt1 e1 = null;

        //e1.getS1()为null
        System.out.println(e1.getS1());

        //option - 对于null值判断的优雅写法(将原本需要复杂if-else的判断写成一句)(若e1为null也会打印"empty val")
        Optional<Entityt1> op1 = Optional.ofNullable(e1);
        System.out.println(op1.map(op2 -> op2.getS1()).orElse("empty val"));

        //以下语句与上面用optional的语句等效
        if (e1 != null) {
            if (e1.getS1() != null) {
                System.out.println(e1.getS1());
            } else {
                System.out.println("empty val");
            }
        } else {
            System.out.println("empty val");
        }
    }
}

class Entityt1{

    private String s1;

    private String s2;

    public String getS1() {
        return s1;
    }

    public void setS1(String s1) {
        this.s1 = s1;
    }

    public String getS2() {
        return s2;
    }

    public void setS2(String s2) {
        this.s2 = s2;
    }
}
上一篇下一篇

猜你喜欢

热点阅读