Pergunta

Em Java, digamos que você tenha uma classe que agrupa um ArrayList (ou qualquer coleção) de objetos.

Como você retornaria um desses objetos de forma que o chamador não visse nenhuma alteração futura no objeto feita no ArrayList?

ou sejavocê deseja retornar uma cópia profunda do objeto, mas não sabe se ele pode ser clonado.

Foi útil?

Solução

Transforme isso em uma especificação:
-Eque que os objetos precisam implementar uma interface para serem permitidos na coleção algo como ArrayList<ICloneable>()

Então você pode ter certeza de que sempre fará uma cópia profunda - a interface deve ter um método que garanta o retorno de uma cópia profunda.

Acho que é o melhor que você pode fazer.

Outras dicas

Uma opção é usar serialização.Aqui está uma postagem no blog explicando isso:

http://weblogs.java.net/blog/emcmanus/archive/2007/04/cloning_java_ob.html

Suponho que seja uma resposta óbvia:

Faça um requisito para que as classes armazenadas na coleção sejam clonáveis.Você pode verificar isso no momento da inserção ou da recuperação, o que fizer mais sentido, e lançar uma exceção.

Ou se o item não for clonável, basta voltar para a opção de retorno por referência.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top