Java · Avançado · Inglês · Técnico
Cloneable
Interface marcadora que autoriza Object.clone() a copiar um objeto campo a campo. Seu design é considerado falho, e o clone padrão faz cópia rasa.
Onde usar
Em review de código legado aparece clone() com super.clone(). Hoje se prefere construtor de cópia ou método de fábrica.
Em código
class Caixa implements Cloneable {
public Caixa clone() {
try { return (Caixa) super.clone(); }
catch (CloneNotSupportedException e) {
throw new AssertionError(e);
}
}
}Exemplos
Don't implement Cloneable, add a copy constructor instead.
Não implemente Cloneable, adicione um construtor de cópia.
The clone shares the same inner list as the original.
O clone compartilha a mesma lista interna do original.
Cuidado
A cópia padrão é rasa: campos de referência apontam para os mesmos objetos do original. E a interface nem declara o método clone.
Origem
Do inglês clone, cópia idêntica, mais o sufixo -able.