空“Optional”类型的返回值应该是什么?

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

Ell*_*sch 5

如果您要返回类型Optional,那么您可以使用Optional.empty()类似

return Optional<Employee>.empty();
Run Code Online (Sandbox Code Playgroud)

但是由于您的返回类型是Employee您的选择是将返回类型更改为Optional<Employee>并使用上面的内容,return null; 或者抛出某种Exception.