当前位置: 代码迷 >> 综合 >> Effective Java 返回零长度的数组或者集合,而不是null
  详细解决方案

Effective Java 返回零长度的数组或者集合,而不是null

热度:57   发布时间:2023-09-29 01:53:54.0
private final List<Cheese> cheesesInStock = ...;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 List<Cheese> getCheeseList() {if(cheeseInstock.isEmpty)) {return Collections.emptyList();elsereturn new ArrayList<Cheese>(cheesesInStock);
}

 

  相关解决方案