Se eu modificar os objetos cc2 através da referencia ref, isso ira alterar o valor de cc2 se eu imprimir diretamente da array ?
não teria como eu fazer uma copia de um objeto para outro objeto sem torna-la uma referencia ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Se eu modificar os objetos cc2 através da referencia ref, isso ira alterar o valor de cc2 se eu imprimir diretamente da array ?
não teria como eu fazer uma copia de um objeto para outro objeto sem torna-la uma referencia ?
Olá Carlos, tudo bem?
Exatamente, se você modificar um objeto cc2 através de uma referência ref, isso irá alterar o valor do objeto cc2 original. Isso acontece porque a referência ref aponta para o mesmo objeto que a variável cc2, e qualquer modificação feita através da referência será refletida na variável original. Se quiser copiar um objeto sem torná-lo uma referência, você pode usar o método de clonagem do Java. O método clone permite que você crie uma cópia independente de um objeto, que pode ser modificado sem afetar o objeto original. No entanto, para usar o método clone, a classe do objeto precisa implementar a interface Cloneable e o método clone deve ser sobrescrito corretamente.
Por exemplo:
public class Pessoa implements Cloneable {
private String nome;
private int idade;
public Pessoa(String nome, int idade) {
this.nome = nome;
this.idade = idade;
}
public String getNome() {
return nome;
}
public int getIdade() {
return idade;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class Main {
public static void main(String[] args) {
Pessoa p1 = new Pessoa("João", 30);
Pessoa p2 = null;
try {
p2 = (Pessoa) p1.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
System.out.println("Nome original: " + p1.getNome());
System.out.println("Nome clonado: " + p2.getNome());
}
}