Bom dia galera… Estou estudando para a certificacao SCJP pelo livro da Kathy e apareceu uma duvida… quando eu faço uma alteracao no codigo. O livro diz que funciona mas pelo que eu executei ele nao funciona… A minha pergunta é: Funciona ou nao…? O codigo e a alteracao esta abaixo… Obrigado…
import java.util.*;
enum Pets {DOG, CAT, HORSE }
class MapTest {
public static void main(String[] args) {
Map<Object, Object> m = new HashMap<Object, Object>();
m.put("K1", new Dog("aiko").name);
m.put("K2", Pets.DOG);
m.put(Pets.CAT, "CAT Key");
Dog d1 = new Dog("Clover");
m.put(d1, "Dog Key");
m.put(new Cat(), "Cat Key");
System.out.println(m.get("K1"));
String k2 = "K2";
System.out.println(m.get(k2));
Pets p = Pets.CAT;
System.out.println(m.get(p));
System.out.println(m.get(d1));
System.out.println(m.get(new Cat()));
System.out.println(m.size());
// aqui é a alteracao
Dog dd = new Dog("Clover");
System.out.println(m.get(dd));
System.out.println(m.get(new Dog("Clover")));
}
}
Como esta no codigo… o livro fala que se eu alterar a instancia do objeto Dog() o Map nao funciona… mas eu executei e funcionou…
// se eu mudar o livro diz que ele tem 8 chars e no Map são 6 e que nao funciona
d1.name = "magnolia";
System.out.println(m.get(d1));
Ele imprimiu o valor do Map…
Estou certo…
OBS: O metodo equals e hasCode da classe Dog esta correto…
Obrigado…