Galera estou um pouco perdido na Interface Cloneable.
Fiz uma classe Pilha
qualquer usando simples Vetor[]
. No caso está assim:
Pilha<T> pilha = new Pilha<>();
estou usando o T
na classe.
O problema é que para cada posição do vetor eu tenho uma outra classe, essa é uma simples classe com 2 atributo um String
e um Boolean
Depende. Você pode fazer uma shallow copy (cópia rasa) ou uma deep copy (cópia profunda). Se você for fazer uma cópia rasa, - copiar a estrutura da pilha, mas não seu conteúdo - geralmente basta fazer uma cópia do seu vetor e mover as referências. Por exemplo:
public Pilha<T> implements Cloneable {
Object[] vetor;
@Override
public Pilha<T> clone() {
Pilha<T> pilha = super.close();
for (int = 0; i < vetor.length; i++) {
pilha.vetor[i] = vetor[i];
}
}
}
Caso você queira fazer um cópia profunda - gerando uma cópia também dos objetos dentro da pilha - aí terá que chamar o clone dos elementos da pilha também. Nesse caso, observe que sua pilha terá que, necessariamente, possuir elementos clonáveis:
public Pilha<T extends Cloneable> implements Cloneable {
Object[] vetor;
@Override
public Pilha<T> clone() {
Pilha<T> pilha = super.close();
for (int = 0; i < vetor.length; i++) {
pilha.vetor[i] = vetor[i] == null ? null : vetor[i].clone();
}
}
}
ViniGodoy Obrigado mesmo cara, vou dar uma olhada melhor, principalmente no ’ deep copy ’ .Obrigado mesmo xD