Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Dúvida básica


ursolouco

Pergunta

Salve,

Vou postar o código para começar:

//Teste.java

public class Teste
{
    public static void main(String[] args)
    {
        java.util.List<Cliente> cliente = new java.util.ArrayList<Cliente>();
        
        cliente.add(new ClienteNacional());
        
        cliente.add(new ClienteInternacional());
        
        Processamento.processar(cliente);
        
        cliente = null;
        
    }
}
//Processamento.java

public class Processamento
{
    public static void processar(java.util.List cliente)
    {       
        int i, j;
        for(i = 0, j = cliente.size(); i < j; i++)
        {
            /*
            O erro esta aqui, teoricamente quando chamo 'cliente.get(i)'
            ele não retorna um objeto que pode ser ClienteNacional ou ClienteInternacional 
            que, obrigatóriamente, tem o método implantando definido da interface ICliente.
            
            Só não entendo o porque do erro...
            
            Tá faltando um 'TypeCast' ?
            */
            cliente.get(i).mostraTipo();
        }
    }
}
//Cliente.java

public abstract class Cliente
{
    
}
//ClienteNacional.java

public class ClienteNacional extends Cliente implements ICliente
{
    public ClienteNacional()
    {    
    }
    
    public void mostraTipo()
    {
        System.out.println("Cliente Nacional");
    }
}
//ClienteInternacional.java

public class ClienteInternacional extends Cliente implements ICliente
{
    public ClienteInternacional()
    {    
    }
    
    public void mostraTipo()
    {
        System.out.println("Cliente Internacional");
    }
}
//ICliente.java

public interface ICliente
{
    public void mostraTipo();
}
Nâo entendo o motivo do erro abaixo:
C:\POO\Java>javac *.java
Processamento.java:18: cannot find symbol
symbol  : method mostraTipo()
location: class java.lang.Object
            cliente.get(i).mostraTipo();

Alguém pode me explicar ?

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Se voce não informa o que cabe na lista ela por padrão recebe qualquer objeto, ou seja, "Object".

Em Object voce não possui esse método por isso dá pau!

Se fizer cast corrigi o problema:

((ICliente)cliente.get(i)).mostraTipo();

Mas.... se voce passa um Objeto que não implementa ICliente vai dar pau novamente. rs

Abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

Salve,

Feliz 2011, segue meus comentários abaixo:

Se voce não informa o que cabe na lista ela por padrão recebe qualquer objeto, ou seja, "Object".

Hum... entendi!!!

Precisaria determinar mais ou menos assim:

public static void processar(java.util.List<Cliente> cliente)
Em Object voce não possui esse método por isso dá pau! Se fizer cast corrigi o problema:
((ICliente)cliente.get(i)).mostraTipo();

Mas.... se voce passa um Objeto que não implementa ICliente vai dar pau novamente. rs

Abraço!

Valeu, eu compreendi o problema da coisa.

Pode trancar o tópico.

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Feliz 2011!! :D

Hum... entendi!!!

Precisaria determinar mais ou menos assim:

public static void processar(java.util.List<Cliente> cliente)
Então ai está outra coisa interessante. Quem declara o método mostraTipo e força qualquer implementação da sua interface implementa-lo é ICliente. Então mesmo se voce passar e receber uma Lista de Cliente "List<Cliente>" não vai funcionar. Funcionaria se voce passar a interface:
public static void processar(java.util.List<ICliente> cliente)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...