4
respostas

Erro de Import

import modelo.basico.Cliente; import modelo.avancado.Cliente;

class Teste { public static void main(String[] args) { System.out.println("Bem vindo!"); } }

O erro de ambiguidade é dado no import e não na utilização, portanto o arquivo não compila. Nesta questão, tenho essa resposta, minha dúvida é a seguinte: São classe com mesmo nome, mas em packages diferentes. Então deveria compilar sem problemas.

4 respostas

Ola , jose sergio holanda cavalcante de morais !

Se você o nome totalmente qualificado da classe no momento que for usar, você poderá usar as duas.

Ex.:

class Teste { 
  public static void main(String[] args) {      
    modelo.basico.Cliente clienteBasico = null; 
    modelo.avancado.Cliente clienteAvancado = null;
    System.out.println("Bem vindo!");
  } 
}

Ou você pode importar um e o outro usar o nome completo pacote+nomeClasse.

Entendeu ? o problema esta em colocar no import os dois imports com o mesmo nome de classe. Quando voce faz os dois imports o java nao saberá de qual classe Cliente ela deverá criar as referencias.

Mas quando voce informa o nomeCompleto = Pacote + NomeClasse, nesse momento o java passa a entender como ele deve trabalhar.

Abraço!

Sim, isso eu compreendo, o que queria levantar na discussão é o fato dos impsere serem de package diferentes, ou seja o qualifer name é diferente, então nesse caso o compilador não deveria "se perder".

Sao diferentes, mas com ele faria para entender de qual classe Cliente ele deve usar?

Quando declaramos os imports no inicio da classe estamos falando assim para o java: "olha java, esses imports voce tem q usar como caminho para criar/acessar meus TIPOS", no caso os tipos são, Cliente e Cliente. Cada cliente esta em um pacote diferente, mas com o mesmo nome. Entendeu porque não vai rolar importar os dois ? Mesmo estando em pacotes diferentes, o java nao tem como saber de qual voce esta falando a unica forma do java saber qual estamos querendo usar é no momento em que for usar o tipo desejado é colocar pacote+nome.

Sacou por que o java nao consegue identificar esses dois imports juntos ?

Abraço!

Sim, saquei, talvez eu não tenha sido claro, compreendi perfeitamente, e já fiz uso de imports "full" package + class.