Java >> Java tutorial >  >> Java

Hvordan kopierer jeg et objekt i Java?

Overvej koden nedenfor:

DummyBean dum = new DummyBean();
dum.setDummy("foo");
System.out.println(dum.getDummy()); // prints 'foo'

DummyBean dumtwo = dum;
System.out.println(dumtwo.getDummy()); // prints 'foo'

dum.setDummy("bar");
System.out.println(dumtwo.getDummy()); // prints 'bar' but it should print 'foo'

Så jeg vil kopiere dum til dumtwo og ændre dum uden at påvirke dumtwo . Men koden ovenfor gør det ikke. Når jeg ændrer noget i dum , den samme ændring sker i dumtwo også.

Jeg tror, ​​når jeg siger dumtwo = dum , Java kopierer kun referencen . Så er der nogen måde at oprette en ny kopi af dum og tildel den til dumtwo ?

Svar

Opret en kopikonstruktør:

class DummyBean {
  private String dummy;

  public DummyBean(DummyBean another) {
    this.dummy = another.dummy; // you can access  
  }
}

Hvert objekt har også en klonmetode, som kan bruges til at kopiere objektet, men brug det ikke. Det er alt for nemt at oprette en klasse og lave en forkert klonemetode. Hvis du vil gøre det, så læs i det mindste, hvad Joshua Bloch har at sige om det i Effektiv Java .


Java tag