Java中利用Optional类优雅判空

前言

Java8新特性 :Optional

它是一个可以为null的容器对象,Optional提供了很多有用的方法,这样我们就不用显式进行空值检测,可以让我们的代码更加优雅可观。

Java8之前大家常用的判空方式

  Student对象

@Data
public class Student {
    private String name;

    private Hobby hobby;

    public Optional<Hobby> getHobbyOfNull(){
        return Optional.ofNullable(this.hobby);
    }

}    

  Hobby对象

@Data
public class Hobby {
    private String name;
}
String name = student.getName();
String hobbyName = student.getHobby().getName();

  当对象为空直接引用将造成NullPointerException  需要再调用每个对象前进行空判断

// 示例一 嵌套参数
String name ="";
if(student != null){
    if (student.getName() != null){
        name = student.getName();
    }
}

//示例二 嵌套对象
String hobbyName ="";
if(student != null){
    Hobby hobby = student.getHobby();
    if (hobby != null && hobby.getName() != null){
        hobbyName = hobby.getName();
    }
}

  当层级关系变多  代码会显得非常臃肿 

  

Optional方式  

示例一 
String name = Optional.ofNullable(student).map(e -> e.getName()).orElse("");

示例二
hobbyName = Optional.ofNullable(student).flatMap(Student::getHobbyOfNull).map(Hobby::getName).orElse("");

猜你喜欢

转载自blog.csdn.net/javanbme/article/details/114142094