Mee*_*ary 1 java return-value option-type
我有一系列方法,其中一个方法的Optional返回类型如下
public Optional<Employee> find(long id) {
for (Employee employee : this.employees) {
if (employee.getId() == id) {
return Optional.of(employee);
}
}
return Optional.empty();
}
public Employee findlById(long id) {
return find(id);
}
Run Code Online (Sandbox Code Playgroud)
这里第二个方法findById会出现编译错误,因为它自己的返回类型和方法的返回类型find不同。
现在,如果我检查该值并找到它,我就可以返回该对象。但是如果Optional对象为空我应该返回什么呢?
public Employee findlById(long id) {
Optional<Employee> employee = find(id);
if (employee.isPresent()) {
return employee.get();
}
return // what??;
}
Run Code Online (Sandbox Code Playgroud)
从我读过的互联网资源来看,你永远不应该返回null一个Optional对象。所以我很困惑,如果不是null的话what?
如果您要返回类型Optional,那么您可以使用Optional.empty()类似
return Optional<Employee>.empty();
Run Code Online (Sandbox Code Playgroud)
但是由于您的返回类型是Employee您的选择是将返回类型更改为Optional<Employee>并使用上面的内容,return null; 或者抛出某种Exception.