Como usar o método clone para criar uma cópia superficial em java
o clone
Conteúdo
A chance de esquecer de copiar um dos campos é alto, e se você adicionar um campo para a classe mais tarde, você pode esquecer de modificar o clone método para incluir o novo campo. Felizmente, você pode resolver esse problema usando o clone método do Objeto classe diretamente em seu próprio clone método.
o clone método do Objeto classe pode criar automaticamente uma cópia de seu objeto que contém cópias de todos os campos que são tipos primitivos (como int e Duplo), Bem como cópias de tipos de referência imutáveis - mais notavelmente, strings. Então, se todos os campos na sua classe ou são primitivos ou cordas, você pode usar o clone método fornecido pela Objeto classe para clonar sua classe.
Este tipo de clone é conhecido como um cópia superficial.
Para chamar o clone método de seu próprio clone método, basta especificar super.clone (). Antes que você possa fazer isso, no entanto, você deve fazer duas coisas:
Video: Diferença entre Duplicar e Clonar no CorelDraw
Declarar que a classe suporta o Cloneable interface. o Cloneable interface é uma interface de marcação que não fornece quaisquer métodos. Ele simplesmente marca uma classe como sendo apropriado para clonagem.
Coloque a chamada para super.clone () em um tente / captura declaração de que captura a exceção CloneNotSupportedException. Essa exceção é lançada se você tentar chamar clone em uma classe que não implementa a Cloneable interface. Desde que você implementar Cloneable, esta excepção não vai acontecer, mas porque CloneNotSupportedException é uma exceção verificada, você deve pegá-lo.
Video: Novo método de como clonar o Whatssap de qualquer pessoa 2017 sem (ROOT)
Aqui está um exemplo de um Empregado classe com um método que utiliza clone super.clone () para clonar a si mesmo:
classe Employee implementa Cloneable {// Campos e métodos omitidos ... clone public Object () {Employee emp-try {emp = (Employee) super.clone () -} catch (CloneNotSupportedException e) {return nulo // nunca será acontecer} emp- retorno}}
Observe que este método não tem que estar ciente de qualquer um dos campos declarados no Empregado classe. este clone método, no entanto, funciona apenas para classes cujos campos são todos ou tipos primitivos ou objetos imutáveis, como cordas.