使用orElse()返回默认值

时间:2020-04-14 18:11:31

标签: java optional

我有一个可选例程来检查是否有空引用:

ToDo todo = new ToDo("Foo");
Optional<ToDo> candidateString = Optional.ofNullable(todo);

// Get the length of the String or 9 as a default value.
int lengthS = candidateString.map(c -> c.getId().length()).orElse(9);
System.out.println("Length of String: " + lengthS);

ToDo类是一个简单的类,本质上是一个String的容器,因此我可以在其中强制使用null引用:

public class ToDo {

private String id;

public ToDo() {
}

public ToDo(String id) {
    this.id = id;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

}

如果我将“ Foo” 作为字符串插入构造函数,则一切正常。如果我将其保留为空,则期望返回由orElse(9)定义的默认值。取而代之的是,我得到了一个N​​ullPointerException,该异常使该孔成为无用的可选代码。

如果不将构造函数留空,如何使代码返回默认值9?也就是说,如果我将第一行更改为:

ToDo todo = new ToDo();

感谢您的提前反馈

恐慌

0 个答案:

没有答案