Clonar Objeto em J2ME

Clonar Objeto em J2ME

Estava procurando uma melhor forma de utilizar a clonagem de objeto em j2me, e encontrei esta.

A clonagem que eu digo, é uma copia com valores identicos de uma outra instancia. Utilizo isso para
fazer verificações de alteracao do objeto.

Na classe que desejamos clonar iremos criar um contrutor que receba ela mesma,
assim ela vai receber a classe e popularemos o novo objeto com seus valores.
Criando um novo objeto identico.

Segue o exemplo abaixo da implementação do contrutor:

public class MinhaClasse {

    String nome;
    int idade;
    /**outros atributos**/
    
    /** Contrutor responsavel por criar um objeto clonado.
     * 
     * @param c MinhaClasse
     */
    public MinhaClasse(MinhaClasse c) {
        /** faça a clonagem ex:**/
        this.nome = c.getNome();
        this.idade = c.getIdade();
    }

    /**outros contrutores**/
    
    public int getIdade() {
        return idade;
    }

    public String getNome() {
        return nome;
    }
    
    /**Outros métodos**/
}

Como implementar:

public class Teste {

    public static void Main() {
        /**Cria Classe que vamos clonar**/
        MinhaClasse mClas = new MinhaClasse();
        
        /**Insere valores**/
        mClas.setNome("nome");
        mClas.setIdade(22);
        
        /**cria um novo objeto, com os mesmos valores da classe anterior
	* ou seja: CLONAMOS!
	**/
        MinhaClasse clone = new MinhaClasse(mClas);

        /**Altera nome do primeiro objeto**/
        mClas.setNome("nome Alterado");

        /**Imprime o nome do primeiro objeto e do objeto clonado**/
        System.out.println("nome, mClass: " + mClas.getNome());
        System.out.println("nome, clone: " + clone.getNome());
    }
}

Resultado:

- nome, mClass: nome Alterado
- nome, clone: nome

Bem, é isso ai, criamos uma copia da classe sem ser por referencia,
assim podemos alterar uma ou outra sem nenhuma influencia entre elas.

Obrigado,
Guilherme Biff Zarelli

Help DEV – Analista desenvolvedor Java / Android

http://helpdev.com.br/zarelli

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>