Recentemente, deparei com um código em que os desenvolvedores usavam nomes de classes totalmente qualificados E nomes de classes importados em seu código-fonte.
Exemplo:
import packageA.Foo;
public class Example {
public packageB.Bar doSomething() {
final Foo foo = new Foo();
...
}
}
Fiquei com a impressão de que a única razão pela qual alguém pode querer usar nome completo para classes no código-fonte é quando elas têm nomes de classe idênticos em dois pacotes diferentes e precisam do nome completo para distinguir entre os dois. Estou errado?
fonte
O outro motivo (exceto colisões) seria se você precisar de uma aula apenas uma vez. Isso é especialmente verdadeiro se a classe implementa uma interface comum e você só precisa do nome real da classe para instanciação. O uso do nome completo torna mais fácil reconhecer que uma classe incomum é usada aqui e onde encontrá-la (assumindo convenções de nomenclatura sensata).
fonte