Obter uma nova instância de um objeto

6 respostas
rvaldomiro

Srs,

como eu faço para criar uma nova instância baseada em um objeto já instanciado, ex:

Cliente cliente = new Cliente(); // até aki ok!

tem como criar outras instâncias do objeto cliente sem conhecer sua superclasse??? tipo:

cliente2 = new cliente; // ou algo do tipo.

Valew´s

Roberto.

6 Respostas

TedLoprao

O q vc pode fazer é usar um pouco de reflection, da seguinte maneira:

Object novoObjeto = velhoObjeto.getClass().newInstance();

Mas vc não saberá a classe do novoObjeto (a não ser vc já saiba de antemão…)

rvaldomiro

Valeu!!

testei aki e funcionou… :lol: :lol: :lol:

richardpeder

“TedLoprao”:
O q vc pode fazer é usar um pouco de reflection, da seguinte maneira:

Object novoObjeto = velhoObjeto.getClass().newInstance();

Mas vc não saberá a classe do novoObjeto (a não ser vc já saiba de antemão…)

Ted…esse codigo que vc citou referencia a um novo objeto a instancia do objeto antigo? seria isso??

ate mais…

TedLoprao

E aí richardpeder…
Na verdade não, o código pega a classe q pertence ao objeto antigo e instancia um novo objeto dessa classe!!!

Por exemplo, se a classe fosse Pessoa, seria como se eu tivesse feito o seguinte:

Object x = new Pessoa();

Respondi sua pergunta???

urubatan

agora se você quer uma copia identica, a unica chance é implementar a interface Cloneable e ensinar a classe a se clonar :slight_smile:

Fabio_Kung

Outro jeito é fazer do objeto que vc quer re-instanciar, sua própria factory.

Complicado?

por exemplo:

class Cliente {

  (...)
  
  public Cliente newInstance() {
    return new Cliente();
  }

}
Client cl1 = new Client();

Client cl2 = cl1.newInstance();

bom, pelo menos EU acho mais elegante que usar reflection…

Criado 1 de abril de 2004
Ultima resposta 2 de abr. de 2004
Respostas 6
Participantes 5