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 ?
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());
}
}