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

cod*_*nut 0 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());
}
Run Code Online (Sandbox Code Playgroud)

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

shm*_*sel 5

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

public Optional<String> middleName = Optional.empty();
Run Code Online (Sandbox Code Playgroud)