samurai,
Eu uso isso para modificar objetos de um array list, que são protegidos.
Quer dizer que só posso recuperar o objeto com o get(index) e modificá-lo com o set(index, object)
ou seja: se eu preciso modificar um único campo de um objeto da lista, preciso criar uma cópia temporária deste objeto fora da lista, modificar o campo e substituir o original pela cópia dentro da lista…
fica assim:
class Interna
{
atributo a;
atributo b;
}
public class Externa
{
ArrayList<Interna> lista;
public Externa();
{
lista = new ArrayList<Interna>();
//supomos que agora este construtor carregue vários objetos da classe Interna a partir de um registro externo
}
}
Agora, se quisermos modificar algum campo de um destes registros preservando os originais, se fizermos
Interna temp = lista.get(n);
temp.x = outroValor;
lista.set(n,temp);
NÃO modifica a lista
por outro lado, eu vou resolver isto assim:
Interna temp = lista.get(n).clone();
temp.x =outroValor;
lista.set(n,temp);
Se alguém souber um jeito melhor por favor me diz, que eu acho um arrodeio muito grande fazer tudo isso
\o