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

Pos Mporo Na Antigrapso Ena Antikeimeno Sten Java



Στην Java, η αντιγραφή ενός αντικειμένου τίθεται σε ισχύ όπου υπάρχει ανάγκη να χρησιμοποιηθούν οι ήδη υλοποιημένες λειτουργίες στον κώδικα αντί να εφαρμοστούν ξανά από την αρχή. Επίσης, είναι βοηθητικό όταν πρόκειται για ενημέρωση των δεδομένων με βάση τις εγγραφές που περιέχονται. Με αυτόν τον τρόπο, μειώνει την πολυπλοκότητα του κώδικα και την αποτελεσματική χρήση των πόρων.

Αυτό το άρθρο θα παρουσιάσει τις προσεγγίσεις για την αντιγραφή ενός αντικειμένου σε Java.

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

Ένα αντικείμενο μπορεί να αντιγραφεί σε Java χρησιμοποιώντας τις ακόλουθες προσεγγίσεις:







Πρόσβαση σε όλες τις τάξεις εντός του ' java.util πακέτο πριν μεταβείτε στα παραδείγματα:



εισαγωγή Ιάβα. χρησιμότητα . *;

Προσέγγιση 1: Αντιγραφή αντικειμένου σε Java χρησιμοποιώντας το 'Copy Constructor'

Ο ' Κατασκευαστής αντιγράφων ” δημιουργεί/καθορίζει ένα αντικείμενο με αναφορά στο ίδιο αντικείμενο κλάσης που δημιουργήθηκε προηγουμένως.



Παράδειγμα
Το ακόλουθο παράδειγμα εφαρμόζει το 'Copy Constructor' για την αντιγραφή ενός αντικειμένου:





δημόσιο τάξη CopyObject {
ενθ ταυτότητα ;
Σειρά πόλη ;
CopyObject ( ενθ ταυτότητα , Σειρά πόλη ) {
Αυτό . ταυτότητα = ταυτότητα ;
Αυτό . πόλη = πόλη ; }
CopyObject ( Αντικείμενο CopyObject ) {
Αυτό . ταυτότητα = αντικείμενο. ταυτότητα ;
Αυτό . πόλη = αντικείμενο. πόλη ; }
δημόσιο κενός απεικόνιση ( ) {
Σύστημα. έξω . println ( 'ID ->' + Αυτό . ταυτότητα ) ;
Σύστημα. έξω . println ( 'Πόλη ->' + Αυτό . πόλη ) ; }
δημόσιο στατικός κενός κύριος ( Σειρά [ ] args ) {
Είσοδος σαρωτή = νέος Ερευνητής ( Σύστημα. σε ) ;
Σύστημα. έξω . println ( 'Εισάγετε το αναγνωριστικό:' ) ;
ενθ ταυτότητα = εισαγωγή. nextInt ( ) ;
Σύστημα. έξω . println ( 'Εισάγετε την πόλη:' ) ;
Σειρά πόλη = εισαγωγή. Επόμενο ( ) ;
Αντικείμενο CopyObject1 = νέος CopyObject ( ταυτότητα , πόλη ) ;
Αντικείμενο CopyObject2 = νέος CopyObject ( αντικείμενο 1 ) ;
Σύστημα. έξω . println ( 'Προεπιλεγμένο αντικείμενο ->' ) ;
αντικείμενο 1. απεικόνιση ( ) ;
Σύστημα. έξω . println ( 'Αντιγραμμένο αντικείμενο ->' ) ;
αντικείμενο2. απεικόνιση ( ) ;
εισαγωγή. Κλείσε ( ) ;
} }

Στο παραπάνω απόσπασμα κώδικα:

  • Δημιουργήστε μια τάξη με το όνομα ' CopyObject '.
  • Καθορίστε τις δηλωμένες μεταβλητές μέλους της κλάσης.
  • Μετά από αυτό, δημιουργήστε έναν παραμετροποιημένο κατασκευαστή κλάσεων που εκχωρεί τις τιμές που έχουν περάσει στις καθορισμένες μεταβλητές μέσω του ' Αυτό '.
  • Τώρα, δημιουργήστε ένα ' Κατασκευαστής αντιγράφων ' που παίρνει ως παράμετρό του ένα αντικείμενο τύπου κλάσης που έχει ήδη δημιουργηθεί που θα μεταβιβαστεί ως όρισμα αργότερα.
  • Επίσης, ορίστε τη συνάρτηση ' απεικόνιση() ' που εμφανίζει τις τιμές αντικειμένων που έχουν περάσει.
  • Στο ' κύριος() ', δημιουργήστε ένα αντικείμενο 'Scanner' για να επιτρέψετε την είσοδο του χρήστη μέσω του ' System.in 'παράμετρος.
  • Επίσης, συσχετίστε το « nextInt() ' και ' Επόμενο() ” μέθοδοι για τη λήψη των εισόδων ακέραιου και συμβολοσειράς χρήστη, αντίστοιχα.
  • Δημιουργήστε ένα αντικείμενο κλάσης μέσω του ' νέος 'λέξη-κλειδί και το ' CopyObject() ” κατασκευαστής που έχει ως ορίσματά του τις τιμές εισόδου χρήστη.
  • Επίσης, δημιουργήστε ένα αντικείμενο αντιγραφής με όρισμα το αντικείμενο που δημιουργήθηκε για να επιστρέψετε τα αντιγραμμένα περιεχόμενα με αναφορά στον κατασκευαστή αντιγραφής κλάσης.
  • Τέλος, επικαλέστε το ' απεικόνιση() ' λειτουργία για εμφάνιση των τιμών εισόδου χρήστη που πέρασε και κλείσιμο του 'Scanner'.

Παραγωγή



Σε αυτήν την έξοδο, μπορεί να υπονοηθεί ότι δημιουργείται ένα αντικείμενο αντιγραφής και εμφανίζεται ανάλογα.

Προσέγγιση 2: Αντιγραφή αντικειμένου σε Java μέσω της μεθόδου «clone()».

Ο ' κλώνος () 'μέθοδος του ' java.lang.Αντικείμενο Η κλάση παίρνει ένα αντικείμενο ως παράμετρο, δημιουργεί και δίνει ένα αντίγραφό του. Αυτή η μέθοδος μπορεί να εφαρμοστεί για την αντιγραφή ενός αντικειμένου με αναφορά στο ήδη δημιουργημένο αντικείμενο (που πρέπει να αντιγραφεί) και στη μέθοδο 'clone()'.

Σύνταξη

αντικείμενο. κλώνος ( )

Αυτή η μέθοδος δίνει ένα αντίγραφο του αντικειμένου και ρίχνει ' CloneNotSupportedException ' εάν η κλάση του αντικειμένου δεν υλοποιεί/εφαρμόζει τη διεπαφή 'Cloneable'.

Παράδειγμα
Μεταβείτε στις παρακάτω γραμμές κώδικα:

δημόσιο τάξη CopyObject υλοποιεί Κλωνοποιήσιμο {
ενθ ταυτότητα ;
Σειρά πόλη ;
CopyObject ( ενθ ταυτότητα , Σειρά πόλη ) {
Αυτό . ταυτότητα = ταυτότητα ;
Αυτό . πόλη = πόλη ;
}
δημόσιο κενός απεικόνιση ( ) {
Σύστημα. έξω . println ( 'ID ->' + Αυτό . ταυτότητα ) ;
Σύστημα. έξω . println ( 'Πόλη ->' + Αυτό . πόλη ) ;
}
δημόσιο στατικός κενός κύριος ( Σειρά [ ] args ) ρίχνει CloneNotSupportedException {
Είσοδος σαρωτή = νέος Ερευνητής ( Σύστημα. σε ) ;
Σύστημα. έξω . println ( 'Εισάγετε το αναγνωριστικό:' ) ;
ενθ ταυτότητα = εισαγωγή. nextInt ( ) ;
Σύστημα. έξω . println ( 'Εισάγετε την πόλη:' ) ;
Σειρά πόλη = εισαγωγή. Επόμενο ( ) ;
Αντικείμενο CopyObject1 = νέος CopyObject ( ταυτότητα , πόλη ) ;
Σύστημα. έξω . println ( 'Προεπιλεγμένο αντικείμενο ->' ) ;
αντικείμενο 1. απεικόνιση ( ) ;
Σύστημα. έξω . println ( 'Αντιγραμμένο αντικείμενο ->' ) ;
Αντικείμενο CopyObject2 = ( CopyObject ) αντικείμενο 1. κλώνος ( ) ;
αντικείμενο2. απεικόνιση ( ) ;
εισαγωγή. Κλείσε ( ) ;
} }

Σύμφωνα με το παραπάνω μπλοκ κώδικα, εκτελέστε τα παρακάτω βήματα:

  • Θυμηθείτε τις προσεγγίσεις που συζητήθηκαν για τον ορισμό μιας κλάσης, τον καθορισμό των μεταβλητών μελών, τη δημιουργία ενός παραμετροποιημένου κατασκευαστή κλάσης (κατανομή των διαβιβασμένων τιμών) και τον καθορισμό μιας συνάρτησης για την εμφάνιση των τιμών, αντίστοιχα.
  • Τώρα σε ' κύριος() ”, ομοίως, ο χρήστης εισάγει τις τιμές και μεταβιβάζει αυτές τις τιμές στο δημιουργημένο αντικείμενο κλάσης και τις εμφανίζει μέσω της αντίστοιχης συνάρτησης.
  • Μετά από αυτό, το « κλώνος () τίθεται σε ισχύ η μέθοδος που σχετίζεται με το ήδη δημιουργημένο αντικείμενο για τη δημιουργία αντικειμένου αντιγραφής.
  • Τέλος, εμφανίστε τα περιεχόμενα των αντιγραμμένων αντικειμένων επίσης μέσω της συνάρτησης που συζητήθηκε.

Παραγωγή

Σε αυτό το αποτέλεσμα, μπορεί να παρατηρηθεί ότι οι τιμές εισόδου χρήστη επιστρέφονται δύο φορές με πανομοιότυπα αποτελέσματα, διασφαλίζοντας ότι το αντικείμενο κλάσης αντιγράφεται κατάλληλα.

συμπέρασμα

Ένα αντικείμενο μπορεί να αντιγραφεί σε Java χρησιμοποιώντας το ' Κατασκευαστής αντιγράφων ', ή το ' κλώνος () 'μέθοδος. Η προηγούμενη προσέγγιση αντιγράφει το αντικείμενο λαμβάνοντας το ήδη δημιουργημένο αντικείμενο ως όρισμα κατασκευής αντιγραφής. Η τελευταία προσέγγιση σχετίζεται άμεσα με το δημιουργημένο αντικείμενο κλάσης. Αυτή η εγγραφή κατέδειξε τις προσεγγίσεις για την αντιγραφή ενός αντικειμένου στην Java.