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