首页 > 解决方案 > 空 `Optional` 类型的返回值应该是什么?

问题描述

我有一个方法链,其中一个方法的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);
} 

这里第二种方法findById会有编译错误,因为它自己的返回类型和find方法的返回类型不同。

现在,如果我检查该值并找到它,我可以返回该对象。Optional但是如果对象为空,我应该返回什么?

public Employee findlById(long id) {

   Optional<Employee> employee = find(id);
   if (employee.isPresent()) {
      return employee.get();
   }
   return // what??;
}

从我读过的互联网上的资源来看,你永远不应该返回null一个Optional对象。所以我很困惑,如果null不是what

标签: javareturn-valueoptional

解决方案


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

return Optional<Employee>.empty();

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


推荐阅读