1、返回一个零长度的数组
private final List<Cheese> cheesesInStock = ...;
public Cheese[] getCheeses(){
if (cheesesInStock.size() == 0)
return null;
}
把没有奶酪(Cheese)可买的情况当做一种特例,这是不合常理的。这样做会要求客户端必须有额外的代码来处理null的返回值,例如:
Cheese[] cheeses = shop.getCheeses();
if(cheeses != null && Arrays.asList(cheeses).contains(Cheese.STILTON)){
System.out.println("非常好,正好") ;
}
而不是下面的这段代码:
if( Arrays.asList(cheeses).contains(Cheese.STILTON)){
System.out.println("非常好,正好") ;
}
这样做很容易出错,因为编写客户端程序的程序员可能会忘记写这种专门的代码来处理null返回值,这样的错误也许几年都不会被注意到。
有时候会有人认为:null返回值比零长度数组更好,因为它避免了分配数组