我认为返回null
值是一个坏主意,所以我正在寻找替代方案。
这是我的代码:
public Flight getFlight(String id) {
for (Flight f : this.flightList ) {
if ( f.getId().equals(id))
return f;
}
return null;
}
我正在寻找具有特定身份证的特定航班,我想将其归还。
如果我返回null
,我每次都必须检查我返回的对象是否为空。如果可能的话,我想避免这种情况。
所以欢迎任何建议。
答案 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();