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()
吗?
答案 0 :(得分:5)
不,不应该。 Optional
是与任何其他类似的引用类型,并且通过相同的规则默认为null。如果要将其初始化为空,则必须明确地执行此操作:
public Optional<String> middleName = Optional.empty();
答案 1 :(得分:4)
任何引用类型成员变量的默认值为null
。 Optional
类型的行为与任何其他引用类型相同。