Σε αυτό το σεμινάριο, θα μάθουμε για την αυτόματη αποστολή και αποσυμπίεση Java με τη βοήθεια παραδειγμάτων.
Java Autoboxing - Primitive Type to Wrapper Object
Στο autoboxing , ο μεταγλωττιστής Java μετατρέπει αυτόματα πρωτόγονους τύπους στα αντίστοιχα αντικείμενα κλάσης περιτυλίγματος. Για παράδειγμα,
int a = 56; // autoboxing Integer aObj = a;
Το Autoboxing έχει ένα μεγάλο πλεονέκτημα ενώ συνεργάζεται με συλλογές Java.
Παράδειγμα 1: Αυτόματη αποστολή Java
import java.util.ArrayList; class Main ( public static void main(String() args) ( ArrayList list = new ArrayList(); //autoboxing list.add(5); list.add(6); System.out.println("ArrayList: " + list); ) )
Παραγωγή
Λίστα Array: (5, 6)
Στο παραπάνω παράδειγμα, δημιουργήσαμε μια λίστα πίνακα τύπου Integer. Ως εκ τούτου, η λίστα πίνακα μπορεί να περιέχει μόνο αντικείμενα Integer
τύπου.
Παρατηρήστε τη γραμμή,
list.add(5);
Εδώ, περνάμε πρωτόγονη τιμή τύπου. Ωστόσο, λόγω της αυτόματης εμφάνισης , η αρχική τιμή μετατρέπεται αυτόματα σε Integer
αντικείμενο και αποθηκεύεται στη λίστα πίνακα.
Java Unboxing - Αντικείμενα περιτύλιξης σε πρωτόγονους τύπους
Κατά την αποσύνδεση , ο μεταγλωττιστής Java μετατρέπει αυτόματα αντικείμενα κλάσης περιτυλίγματος στους αντίστοιχους πρωτόγονους τύπους τους. Για παράδειγμα,
// autoboxing Integer aObj = 56; // unboxing int a = aObj;
Όπως το αυτόματο κιβώτιο , το unboxing μπορεί επίσης να χρησιμοποιηθεί με συλλογές Java.
Παράδειγμα 2: Αποσυμπίεση Java
import java.util.ArrayList; class Main ( public static void main(String() args) ( ArrayList list = new ArrayList(); //autoboxing list.add(5); list.add(6); System.out.println("ArrayList: " + list); // unboxing int a = list.get(0); System.out.println("Value at index 0: " + a); ) )
Παραγωγή
ArrayList: (5, 6) Τιμή στο ευρετήριο 0: 5
Στο παραπάνω παράδειγμα, παρατηρήστε τη γραμμή,
int a = list.get(0);
Εδώ, η get()
μέθοδος επιστρέφει το αντικείμενο στο ευρετήριο 0. Ωστόσο, λόγω της αποσυμπίεσης , το αντικείμενο μετατρέπεται αυτόματα στον πρωτόγονο τύπο int
και εκχωρείται στη μεταβλητή a.