我有一个可选例程来检查是否有空引用:
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)定义的默认值。取而代之的是,我得到了一个NullPointerException,该异常使该孔成为无用的可选代码。
如果不将构造函数留空,如何使代码返回默认值9?也就是说,如果我将第一行更改为:
ToDo todo = new ToDo();
感谢您的提前反馈
恐慌