Πώς μπορώ να αντιγράψω ένα αντικείμενο στη Java;

Σκεφτείτε τον παρακάτω κώδικα:

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'

Θέλω λοιπόν να αντιγράψω το dum στο dumtwo και να αλλάξω το dum χωρίς να επηρεάσω το dumtwo. Αλλά ο παραπάνω κώδικας δεν το κάνει αυτό. Όταν αλλάζω κάτι στο dum, η ίδια αλλαγή συμβαίνει και στο dumtwo.

Υποθέτω ότι, όταν λέω dumtwo = dum, η Java αντιγράφει την αναφορά μόνο. Έτσι, υπάρχει κάποιος τρόπος να δημιουργήσω ένα νέο αντίγραφο του dum και να το αναθέσω στο dumtwo;

Ναι. Πρέπει να κάνετε Βαθιά αντιγραφή του αντικειμένου σας.

Σχόλια (1)

Εδώ είναι μια αξιοπρεπής εξήγηση της clone() αν τελικά τη χρειαστείτε...

Εδώ: clone (μέθοδος Java)

Σχόλια (0)

Για να το κάνετε αυτό πρέπει να κλωνοποιήσετε το αντικείμενο με κάποιο τρόπο. Αν και η Java διαθέτει μηχανισμό κλωνοποίησης, μην τον χρησιμοποιείτε αν δεν είναι απαραίτητο. Δημιουργήστε μια μέθοδο αντιγραφής που θα κάνει τη δουλειά της αντιγραφής για εσάς, και στη συνέχεια κάντε το:

dumtwo = dum.copy();

Εδώ υπάρχουν μερικές ακόμα συμβουλές σχετικά με διάφορες τεχνικές για την πραγματοποίηση μιας αντιγραφής.

Σχόλια (0)