private final ListcheesesInStock = ...;public Cheese[] getCheese() { if(cheesesInStock.size() == 0) return null; ...}
如果返回null,
在客户端处理代码就需要有额外的代码来处理null返回值:
Cheese[] cheeses = shop.getCheeses();if(cheeses != null && Arrays.asList(cheese).contains(Cheese.STILTON)) System.out.println("Jolly good");}
而不是:
Cheese[] cheeses = shop.getCheeses();if( Arrays.asList(cheese).contains(Cheese.STILTON)) System.out.println("Jolly good");}
认为null返回值比零长度数组更好,因为避免了分配数组所需要的开销,是不对的。
1.除非分析表明这是方法的确影响了性能
2.对于不返回任何类型调用,返回同一个零长度数组是可能的
Collections类提供当需要空集合时都返回同一个不可变的空集合的方法:
public ListgetCheeseList() { if(cheeseInstock.isEmpty)) { return Collections.emptyList(); else return new ArrayList (cheesesInStock);}