Ir ao conteúdo
  • Cadastre-se
amkall

Como usar o typecast em um hashmap

Recommended Posts

(classe 1)

public abstract class ContaBancaria{
   float saldo;
   int numero
}

(classe 2)

public class ContaCorrente extends ContaBancaria{
}

(classe 3)

public class ContaPoupança extends ContaBancaria{
}

(classe 4)

public class Cliente{
    ContaBancaria conta;
}

(classe 5)

public class app{
   public static void main(string[] args){
      HashMap<Integer, Cliente> banco = new HashMap<Integer, Cliente>();
      cliente.get(i).getConta() // aqui e onde quero chegar, quero usar um typecast pra tratar a conta da classe cliente como ContaCorrente ou ContaPoupança
      //pra eu poder acessar os metodos das subclasses, ((ContaCorrente)getConta()) nao funciona, tem alguma maneira que eu possa usar nessa fase do codigo
     //de usar um typecast ou algum outro jeito de acessar as subclasses?
   }
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sinceramente é um erro complicado ... eu prefiro fazer typecasts usando if para testar o tipo do objeto antes de converter

 

if (client.get(i).getConta() instanceof ContaCorrente) {
  ContaCorrente cc = (ContaCorrente) client.get(i).getConta();
}else if (client.get(i).getConta() instanceof ContaPoupanca){
  ContaPoupanca poupanca = (ContaPoupanca) client.get(i).getConta();
}

PS.: Sei que foi exemplo, mas evite usar caracteres especiais nos nomes das classes, dependendo da versão do compilador pode dar problema ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×