No caso desta questão abaixo, o eclipse pede para fazer cum cast no hashMap para Map, para que funcione a criação do mapa, porém, depois de fazer esse cast as funções put não dão certo.
Onde eu estou errando?
Faça testes com o Map, como visto nesse capítulo:
public class TestaMapa {
public static void main(String[] args) {
Conta c1 = new ContaCorrente();
c1.deposita(10000);
Conta c2 = new ContaCorrente();
c2.deposita(3000);
// cria o mapa
Map mapaDeContas = new HashMap();
// adiciona duas chaves e seus valores
mapaDeContas.put("diretor", c1);
mapaDeContas.put("gerente", c2);
// qual a conta do diretor?
Conta contaDoDiretor = (Conta) mapaDeContas.get("diretor");
System.out.println(contaDoDiretor.getSaldo());
}
}
Depois, altere o código para usar o generics e não haver a necessidade do casting, além da garantia de que nosso mapa estará seguro em relação a tipagem usada. Você pode utilizar o quickfix do Eclipse para que ele conserte isso para você: na linha em que você está chamando o put, use o ctrl + 1. Depois de mais um quickfix (descubra!) seu código deve ficar como segue:
// cria o mapa
Map<String, Conta> mapaDeContas = new HashMap<String, Conta>();
Que opção do ctrl + 1 você escolheu para que ele adicionasse o generics para você?