Hvordan kopierer jeg et objekt i Java?

Se 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 endre dum uten å påvirke dumtwo. Men koden ovenfor gjør ikke det. Når jeg endrer noe i dum, skjer den samme endringen også i dumtwo.

Jeg antar at når jeg sier dumtwo = dum, kopierer Java bare referansen. Så, er det noen måte å lage en ny kopi av dum og tilordne den til dumtwo?

Ja, du må Deep Copy objektet ditt.

Kommentarer (1)

Her er en anstendig forklaring på klone() hvis du ender opp med å trenge det ...

Her: clone (Java-metode)

Kommentarer (0)

For å gjøre det må du klone objektet på en eller annen måte. Selv om Java har en kloningsmekanisme, må du ikke bruke den hvis du ikke trenger det. Lag en kopieringsmetode som gjør kopieringsarbeidet for deg, og gjør det deretter:

dumtwo = dum.copy();

Her er noen flere råd om forskjellige teknikker for å oppnå en kopi.

Kommentarer (0)