为什么类中的Optional成员变量的默认值为null?

时间:2017-03-16 07:45:02

标签: java java-8

import java.util.Optional;

public class Student {
   public long id;
   public String firstName;
   public Optional<String> middleName;
   public String lastName;
   .
   .
   .
   public Optional<String> getMiddleName() {
     return middleName;
   }
}

Student student = new Student();
if (student.getMiddleName().isPresent()) {
   System.out.println(student.getMiddleName().get());
}

上面的代码将获得NullPointerException,因为Optional类成员值的默认值为null。应该是默认值是Optional.empty()吗?

2 个答案:

答案 0 :(得分:5)

不,不应该。 Optional是与任何其他类似的引用类型,并且通过相同的规则默认为null。如果要将其初始化为空,则必须明确地执行此操作:

public Optional<String> middleName = Optional.empty();

答案 1 :(得分:4)

任何引用类型成员变量的默认值为nullOptional类型的行为与任何其他引用类型相同。