ArrayList

3 respostas
F

Alguem poderia me informar para que serve o metodo clone do ArrayList e de outros objetos que possuem o mesmo metodo[/code]

3 Respostas

T

Veja o javadoc de clone() em java.lang.Object.

Basicamente, clone serve para fazer cópias (clones) de objetos. Só que isso não é automático; a classe é quem deve implementar esse método clone, porque ela deve saber o que copiar. Por isso é que nem todas as classes definem o método clone. Só algumas.

Por exemplo, arrays definem esse método clone.

Olhando o código abaixo você pode entender qual a diferença entre clonar um objeto e simplesmente copiá-lo.

import java.util.*;
...
String[] s = {"val1", "val2", "val3"};
String[] t = s.clone(); // recebendo um clone
String[] u = s; // copiando a referência
System.out.println (Arrays.asList(s)); // imprime [val1, val2, val3]
t[0] = "outra coisa";
System.out.println (Arrays.asList(s)); // imprime [val1, val2, val3]
System.out.println (Arrays.asList(t)); // imprime [outra coisa, val2, val3]
u[0] = "ainda outra coisa";
System.out.println (Arrays.asList(s)); // imprime [ainda outra coisa, val2, val3]
System.out.println (Arrays.asList(t)); // imprime [outra coisa, val2, val3]
System.out.println (Arrays.asList(u)); // imprime [ainda outra coisa, val2, val3]
B

Quando você usa o método clone, você faz uma cópia dos valores e não da referência. quando você usa:

a = b;

você está copiando a referência de b para a.

resumindo:

String[] s = {"val1", "val2", "val3"}; 
String[] t = s.clone(); // recebendo um clone 
String[] u = s; // copiando a referência 
s == t ? false
s == u ? true
t == u ? false
s.equals(t) ? true
s.equals(u) ? true
t.equals(u) ? true
F

bejeto, aproveitando o assunto de refencia de objetos notei na sua assinatura que conhece hibernate, e estou tendo serios problemas em refencia de objetos com o banco de dados principalmente qndo tento carregar um objeto duas vezes ou deleta-lo, voce pode me explicar como funciona a refencia dos objetos com hibernate estou super confuso, eu uso com xdoclet!!

Criado 14 de junho de 2005
Ultima resposta 14 de jun. de 2005
Respostas 3
Participantes 3