Ao ler o livro Efective Java deparei-me com uma característica da linguagem Java que pensava que não existia: os arrays podem ter zero elementos.

É possível fazer,

String[] a = new String[0];
System.out.println("não é null:" + (a==null));
System.out.println("O tamanho é:" + a.length);
 for(String s :a)
 {
        System.out.println(s);
 }

que devolve,

não é null:false
O tamanho é:0 

A recomendação do livro é que quando um método retorna um array, ele deve retornar um array com tamanho zero em vez de devolver NULL. Desta forma evita-se o recurso ao if para testar se o retorno é null ou se há valor, como é o caso da linguagem C++. Como exemplo desta recomendação observe-se a java.lang.List.

List<String> l = new ArrayList<String>();
String[] la = l.toArray(new String[0]);
System.out.println("la.length = " + la.length);

que devolve,

la.length = 0 

O pedaço de código não funcionaria da mesma forma e o array fornecido tivesse inicialmente elementos no array,

String[] laNull = l.toArray(new String[1]);
System.out.println("la.length = " + la.length);
for(String s :laNull)
{
    System.out.println(s);
}

que devolve,

la.length = 0
null