Algo que confunde o meu cerébro!

2 respostas Resolvido
java
Z

Bom, dessa vez não é uma dúvida com código e sim no Java em si. Minha dúvida é:

Se eu tenho uma lista de objetos, e adiciono um desses objetos em um HashMap, ao trabalhar com ele onde quer que ele esteja adicionado, ele será modificado dentro da minha lista? Como funciona isso?

Exemplo em código:

List<Cachorro> caes = new ArrayList<>; HashMap<String, Cachorro> donos = new HashMap<>(); donos.put("carlos", caes.get(0)); Cachorro c = donos.get("carlos"); c.setPeso(20);

Os atributos do objeto serão alterados também na lista? Os objetos são como referências? Isso me confunde muito. Obrigado.

2 Respostas

rmendes08
Solucao aceita

Sim. Em Java os objetos sempre são manipulados através de referências. Quando você adiciona um objeto em uma coleção, na verdade você está adicionando a referência ao objeto à coleção. Portanto, ao recuperar o objeto você estará recuperando a referência. Se você continuar inserindo e recuperando esta referência em diferentes coleções, você sempre estará apontando para o mesmo objeto. Assim, se você manipular este objeto, as mudanças serão refletidas em todas as coleções na qual ele está presente.

Z

Muito obrigado, esclareceu minha dúvida!

Criado 3 de março de 2016
Ultima resposta 4 de mar. de 2016
Respostas 2
Participantes 2