替代返回null值

时间:2015-09-03 12:48:28

标签: java

我认为返回null值是一个坏主意,所以我正在寻找替代方案。

这是我的代码:

 public Flight getFlight(String id)    {
      for (Flight f : this.flightList ) {
         if ( f.getId().equals(id))
            return f;
      }
      return null;
   }

我正在寻找具有特定身份证的特定航班,我想将其归还。

如果我返回null,我每次都必须检查我返回的对象是否为空。如果可能的话,我想避免这种情况。

所以欢迎任何建议。

3 个答案:

答案 0 :(得分:3)

这实际上取决于“未找到航班”这一事件是否异常。

当你调用这个方法时,如果调用代码希望一直有效的航班,那么找不到它就是例外。 应该是一个航班,但没有一个。在这种情况下,最好抛出一个自定义的异常,例如FlightNotFoundException,其中包含搜索到的航班的ID。它通常是RuntimeException:飞行应该在那里,你无法从中恢复。

但是,如果不满足此要求,我认为返回null没有任何问题,只要这是正确记录的。

答案 1 :(得分:1)

您可以查看Null object pattern(在C#中实现为string.Empty),因为它

  

替换NULL对象实例的检查。 Null Object反映了无关系,而不是检查是否为空值。在数据不可用的情况下,此类Null对象也可用于提供默认行为。

在你的情况下,它可能是这样的:

public class NullFlight extends AbstractFlight {

 @Override
   public String getId() {
      return "Not Available for null Flight!";
   }

   @Override
   public boolean isNil() {
      return true;
   }
}

在处理valid case时这也是collections,你应该返回'new'空的而不是Null。

答案 2 :(得分:0)

通常返回null而不是对象是一种不好的做法。返回null有两种选择。 首先,我建议使用定义的中性(“null”)行为检查Null Object Pattern。 第二个想法是当你无法返回一个对象时抛出你自己的异常。

if ( f.getId().equals(id)){ return f; }else throw new FlightNotFoundException();