Pessoal Boa Tarde,
Eu vou disponibilizar uma lista, porem eu não posso permitir que alterem o conteúdo da lista original, ou seja, preciso de um clone.
Mesmo que eu crie uma nova lista a referência dos objetos originais ainda fica.
Pensei em criar um método clone, o que eu passe cada atributo um por um e retorne um novo objeto… porem gostaria de saber se tem um jeito menos braçal.
Montei uma classe teste bem simples para demonstrar o problema.
package teste;
import java.util.ArrayList;
import java.util.List;
public class TesteNovaLista {
private String dadosTeste;
private List<TesteNovaLista> lista;
public TesteNovaLista() {
lista = new ArrayList<TesteNovaLista>();
}
public void addLista(String item) {
TesteNovaLista teste = new TesteNovaLista();
teste.setDadosTeste(item.toUpperCase().trim());
this.lista.add(teste);
}
public List<TesteNovaLista> getLista() {
return new ArrayList<TesteNovaLista>(this.lista);
}
public void setDadosTeste(String dadosTeste) {
this.dadosTeste = dadosTeste;
}
public String getDadosTeste() {
return dadosTeste;
}
public static void main(String[] args) {
TesteNovaLista testeAAAA = new TesteNovaLista();
testeAAAA.addLista("a");
TesteNovaLista auxTeste = new TesteNovaLista();
auxTeste.setDadosTeste("b");
testeAAAA.getLista().add(auxTeste);
testeAAAA.getLista().get(0).setDadosTeste("c");
for (TesteNovaLista t : testeAAAA.getLista()) {
System.out.println(t.getDadosTeste());
}
}
}