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());
		}
	}
}