java中Optional的正确使用方法

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;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容