我正在阅读J. Bloch的有效Java,现在我正在讨论避免返回null
,而是返回空集合的部分。这是本节中的代码示例:
// The right way to return a copy of a collection
public List<Cheese> getCheeseList() {
if (cheesesInStock.isEmpty())
return Collections.emptyList(); // Always returns same list
else
return new ArrayList<Cheese>(cheesesInStock);
}
我真的不明白,如果返回
cheesesInStock
,仅仅返回cheesesInStock.isEmpty()
是怎么回事。为什么最好返回预定义的Collections.emptyList()
。如果返回cheesesInStock
,我们可能会遇到什么麻烦。 最佳答案
如果该方法返回cheesesInStock
-调用者可以将一些奶酪添加到列表中。
这是一个坏习惯,因为您可能想控制添加过程。