From Effective Java 2/e by Joshua Bloch
There is no reason ever to return null from an array- or collection-valued method instead of returning an empty array or collection
// The right way to return an array from a collection private final List<Cheese> cheesesInStock = ...; private static final Cheese[] EMPTY_CHEESE_ARRAY = new Cheese[0]; /** * @return an array containing all of the cheeses in the shop. */ public Cheese[] getCheeses() { return cheesesInStock.toArray(EMPTY_CHEESE_ARRAY); }
// 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); }
Returing null
- Doing so requires extra code in the client to handle the null return value
- It is error-prone, because the programmer writing the client might forget to write the special- case code to handle a null return
- Returning null in place of an empty array also complicates the method that returns the array or collection