1.10.3
Conflito de nomes de classes
Nomes de classes devem ser únicos dentro de um mesmo contexto de uso. Em alguns casos, uma mesma classe pode existir em pacotes diferentes, o que pode gerar ambiguidade. Quando isso ocorre, uma importação explícita de uma classe tem precedência sobre qualquer importação com curinga. Se for necessário utilizar duas classes com o mesmo nome, deve-se recorrer ao nome totalmente qualificado de uma delas.
Exemplo conceitual
import java.util.Date;
public class Application {
java.sql.Date sqlDate;
Date utilDate;
}
Explicação linha a linha
import java.util.Date;
Importa explicitamente a classe Date do pacote java.util. Essa importação tem prioridade sobre qualquer importação com curinga que contenha uma classe com o mesmo nome.
public class Application {
Declara a classe que fará uso de duas classes diferentes chamadas Date.
java.sql.Date sqlDate;
Declara uma variável usando o nome totalmente qualificado da classe Date do pacote java.sql. O uso do nome completo elimina qualquer ambiguidade.
Date utilDate;
Refere-se à classe Date importada explicitamente de java.util.
}
Encerra a definição da classe.
Quando duas classes possuem o mesmo nome, o uso de importações explícitas e nomes totalmente qualificados garante clareza e evita erros de compilação. Esse mecanismo reforça a importância dos pacotes como forma de organização e isolamento de código em Java.