可选类型返回空值

Gad*_*dam 3 java null nullpointerexception optional

我有这样的课.

public class SomeClass {

  private Optional<String> testString;

  public SomeClass() { 
      populateFields();
  }

  public Optional<String> getTestString() {
      return testString;
  }

  private void populateFields() {
     if(//something is going false here){
       testString = functionThatReturnsOptionalString();
     }
  }

}
Run Code Online (Sandbox Code Playgroud)

现在instanceOfSomeClass.getTestString()返回null.是不是可选始终应该包含非空值或为空?我正在尝试或避免使用isNull()并在我的调用者中使用isEmpty().

如果我在populateFields()的第一行放置一个断点并在那时检查testString中的值,它会将值显示为null.表示此字段的默认值(在分配任何内容之前)为null.

请详细说明这种情况; 也许正确使用Optional?

Lou*_*man 10

一个Optional总是包含一个非null值或者是空的,是的,但是你没有Optional,你有一个类型为Optional的引用为null.你需要初始化testString,例如Optional.empty().

Optional不是魔法,它是一个像任何其他对象一样的对象,并且Optional引用本身可以为null.它的内容Optional不能为空.