Sobrescrevendo um objeto

5 respostas
A

Tem algo de errado eu fazer isso?

Profissional objProfissionaldaLista = (Profissional) listaProfissional.get(index); Profissional objNovo = new Profissional(paramentrosNovos); objProfissionaldaLista = (Profissional) objNovo;

O objNovo sobresceveria o objProfissionaldaLista certo? Se era pra acontecer isso, aqui tem algo errado então…

Existe um jeito mais correto de fazer isso? seguindo as boas normas da OO?

Abraços =)

5 Respostas

renzonuccitelli

Quanto vc faz a atribuição, vc passa uma cópia da referência para ObjDalista. Assim, se sua intenção era alterar o Objeto que efetivamente está na lista, vc teria que alterar os seus atributos, ou entao colocar o seu novo objeto na lista, no lugar do antigo…

gabrielmassote

Tudo bem arglas?

No seu código tem duas coisas que podem ser melhoradas.
Quando utilizamos coleções de dados, tipo ArrayList, Vector e etc, devemos especificar o tipo de dado que essa coleção irá suportar, pois apenas dados do tipo especificado serão suportados e assim evitando erros em tentar adicionar outro tipo ao ArrayList.

por exemplo:

List<Profissional> listaProfissional = new ArrayList<Profissional>();

Profissional p = new Profissional(argumentos);
listaProfissional.add(p);

E na hora que vamos atribuir uma nova referência a objetos do mesmo tipo,não precisamos fazer cast para este tipo, que nem você faz aqui:

Profissional objNovo = new Profissional(paramentrosNovos);  
objProfissionaldaLista = (Profissional) objNovo;

Com isso seu código poderia ficar da seguinte maneira:

List<Profissional> listaProfissional = new ArrayList<Profissional>();

Profissional p1 = new Profissional(argumentos);
Profissional p2 = new Profissional(argumentos);
Profissional p3 = new Profissional(argumentos);
listaProfissional.add(p1);
listaProfissional.add(p2);
listaProfissional.add(p3);

Profissional objProfissionaldaLista = listaProfissional.get(index);  
Profissional objNovo = new Profissional(paramentrosNovos);  
objProfissionaldaLista = objNovo; // Linha 1

Na linha 1: o objeto que você recebeu da lista e a variavel objProfissionaldaLista referenciava, passa a referenciar o novo objeto criado (objNovo).

Espero ter ajudado e qualquer coisa estou a disposição,
Gabriel Massote Prado.

A

Hmmm esse lance de especificar o tipo de coleção da ArrayList eu não tava ligado não…

MUITO obrigado mesmo pessoal =)

Vou refatorar o meu código aqui para adequá-lo à melhor maneira =D

Grande abraço!

M

arglas,

só para complementar o que o gabrielmassote falou…
o uso de se chama generics no java.

Este mecanismo tambem pode ser usado na passagem de parametros para métodos e criação de classes java.

Abraços.

A

Valeu Mezini!!

Brigadão mesmo!

Criado 27 de dezembro de 2008
Ultima resposta 29 de dez. de 2008
Respostas 5
Participantes 4