Περισσότερα
Πώς μπορώ να αντιγράψω ένα αντικείμενο στη 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
;
759
3
Ναι. Πρέπει να κάνετε Βαθιά αντιγραφή του αντικειμένου σας.
Εδώ είναι μια αξιοπρεπής εξήγηση της
clone()
αν τελικά τη χρειαστείτε...Εδώ: clone (μέθοδος Java)
Για να το κάνετε αυτό πρέπει να κλωνοποιήσετε το αντικείμενο με κάποιο τρόπο. Αν και η Java διαθέτει μηχανισμό κλωνοποίησης, μην τον χρησιμοποιείτε αν δεν είναι απαραίτητο. Δημιουργήστε μια μέθοδο αντιγραφής που θα κάνει τη δουλειά της αντιγραφής για εσάς, και στη συνέχεια κάντε το:
Εδώ υπάρχουν μερικές ακόμα συμβουλές σχετικά με διάφορες τεχνικές για την πραγματοποίηση μιας αντιγραφής.