Hvordan kopierer jeg et objekt i Java?

Se nedenstående kode:

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'

Jeg vil altså kopiere dum til dumtwo og ændre dum uden at det påvirker dumtwo. Men det gør ovenstående kode ikke. Når jeg ændrer noget i dum, sker den samme ændring også i dumtwo.

Jeg gætter på, at når jeg siger dumtwo = dum, kopierer Java kun reference. Så er der nogen måde at oprette en ny kopi af dum og tildele den til dumtwo?

Ja. Du skal Deep Copy dit objekt.

Kommentarer (1)

Her er en god forklaring på clone(), hvis du får brug for det...

[Her: clone (Java-metode)] (http://en.wikipedia.org/wiki/Clone_%28Java_method%29)

Kommentarer (0)

For at gøre det er du nødt til at klone objektet på en eller anden måde. Selv om Java har en kloningsmekanisme, skal du ikke bruge den, hvis du ikke behøver det. Opret en kopieringsmetode, der gør kopieringsarbejdet for dig, og gør derefter:

dumtwo = dum.copy();

Her er der flere råd om forskellige teknikker til at udføre en kopi.

Kommentarer (0)