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.