Οι wrapper classes στην Java αναφέρονται στις κλάσεις που χρησιμοποιούνται για να ενθυλακώσουν (wrap) τους πρωτογενείς τύπους δεδομένων (primitive data types) σε αντικείμενα. Κάθε πρωτογενής τύπος δεδομένων έχει μια αντίστοιχη wrapper class που τον αναπαριστά. Οι πιο γνωστές wrapper classes περιλαμβάνουν τα εξής:

  • Integer: Ενθυλακώνει τον πρωτογενή τύπο δεδομένων int.
  • Double: Ενθυλακώνει τον πρωτογενή τύπο δεδομένων double.
  • Boolean: Ενθυλακώνει τον πρωτογενή τύπο δεδομένων boolean.
  • Character: Ενθυλακώνει τον πρωτογενή τύπο δεδομένων char.

Οι wrapper classes παρέχουν πολλές χρήσιμες μεθόδους για την επεξεργασία και τη διαχείριση των πρωτογενών τύπων δεδομένων ως αντικείμενα. Επίσης, οι wrapper classes είναι αναγκαίες σε πολλές περιπτώσεις όπου απαιτείται η χρήση αντικειμενοστραφούς προγραμματισμού, καθώς οι πρωτογενείς τύποι δεδομένων δεν είναι αντικείμενα.

Οι wrapper classes χρησιμοποιούνται συνήθως για να μετατρέψουν πρωτογενείς τύπους δεδομένων σε αντικείμενα, προκειμένου να τους χρησιμοποιήσουμε σε περιβάλλοντα που απαιτούν αντικείμενα, όπως συλλογές (collections) ή άλλες κλάσεις. Επιπλέον, οι wrapper classes παρέχουν μεθόδους που μας επιτρέπουν να εκτελέσουμε βασικές λειτουργίες με τις τιμές που αντιστοιχούν στους πρωτογενείς τύπους δεδομένων.

Παρακάτω δίνεται ένα παράδειγμα που δείχνει πώς να χρησιμοποιήσετε μια wrapper class στη Java:

Integer myInt = 5;
System.out.println(myInt.toString()); // Output: 5

Στο παραπάνω παράδειγμα, ο πρωτογενής τύπος δεδομένων int μετατρέπεται σε αντικείμενο της κλάσης Integer και στη συνέχεια καλείται η μέθοδος toString() για να επιστραφεί ο αριθμός ως συμβολοσειρά.

Οι βασικοί τύποι δεδομένων (όπως int, double κ.λπ.) δεν είναι συμβατοί με τις συλλογές (collections) της Java, όπως η ArrayList, επειδή αυτές οι συλλογές αποθηκεύουν αντικείμενα αντί για τους πρωτογενείς τύπους δεδομένων. Για να αποθηκεύσουμε πρωτογενείς τύπους δεδομένων στις συλλογές, πρέπει να χρησιμοποιήσουμε wrapper classes (τάξεις περιτυλίγματος) που επιτρέπουν τη μετατροπή των πρωτογενών τύπων σε αντικείμενα. Οι wrapper classes για τους πρωτογενείς τύπους δεδομένων είναι οι Integer, Double, κ.λπ. Έτσι, μπορούμε να χρησιμοποιήσουμε τις wrapper classes για να αποθηκεύσουμε πρωτογενείς τύπους δεδομένων στις συλλογές όπως η ArrayList.

Στο παράδειγμα που δίνεται παραπάνω, η σωστή σύνταξη για τη δημιουργία μιας ArrayList με ακέραιους αριθμούς είναι η εξής:

ArrayList<Integer> myNumbers = new ArrayList<Integer>();

Όπως βλέπετε, χρησιμοποιούμε την wrapper class Integer αντί για τον πρωτογενή τύπο δεδομένων int. Με αυτόν τον τρόπο, μπορούμε να αποθηκεύσουμε ακέραιους αριθμούς στη συλλογή myNumbers.

[adinserter block=”2″]

Στην Java, μπορείτε να δημιουργήσετε ένα αντικείμενο wrapper χρησιμοποιώντας την αντίστοιχη wrapper class. Για παράδειγμα, για να δημιουργήσετε ένα αντικείμενο τύπου Integer, μπορείτε να γράψετε το εξής:

Integer myInt = new Integer(5);

Στο παραπάνω παράδειγμα, δημιουργούμε ένα νέο αντικείμενο Integer με την τιμή 5. Μπορούμε στη συνέχεια να εκτυπώσουμε την τιμή αυτού του αντικειμένου χρησιμοποιώντας απλώς το αντικείμενο, όπως στο παρακάτω παράδειγμα:

System.out.println(myInt);

Το παραπάνω κώδικας θα εκτυπώσει την τιμή 5.

Μπορείτε επίσης να δημιουργήσετε ένα αντικείμενο wrapper παρέχοντας απλώς την τιμή του πρωτογενούς τύπου ως παράμετρο στον constructor της αντίστοιχης wrapper class.

Για παράδειγμα:

Integer myInt = new Integer(10);    // Δημιουργία αντικειμένου Integer με τιμή 10
Double myDouble = new Double(3.14); // Δημιουργία αντικειμένου Double με τιμή 3.14
Boolean myBoolean = new Boolean(true); // Δημιουργία αντικειμένου Boolean με τιμή true

Επιπλέον, μπορείτε να χρησιμοποιήσετε τις μεθόδους valueOf() ή parseX() για να μετατρέψετε ένα πρωτογενή τύπο δεδομένων σε ένα αντικείμενο wrapper.

Για παράδειγμα:

Integer myInt = Integer.valueOf("10");  // Δημιουργία αντικειμένου Integer με τιμή 10, από μια συμβολοσειρά
Double myDouble = Double.valueOf("3.14"); // Δημιουργία αντικειμένου Double με τιμή 3.14, από μια συμβολοσειρά
int myIntValue = Integer.parseInt("10");  // Μετατροπή της συμβολοσειράς "10" σε ακέραιο αριθμό 10
double myDoubleValue = Double.parseDouble("3.14"); // Μετατροπή της συμβολοσειράς "3.14" σε δεκαδικό αριθμό 3.14

Στο παραπάνω παράδειγμα, δημιουργούμε ένα αντικείμενο Integer με τιμή 10, χρησιμοποιώντας τη μέθοδο valueOf() και μια συμβολοσειρά ως παράμετρο.

Αντίστοιχα, μπορούμε να μετατρέψουμε ένα αντικείμενο wrapper σε ένα πρωτογενή τύπο δεδομένων, χρησιμοποιώντας τις μεθόδους xxxValue() του αντίστοιχου wrapper class.

Για παράδειγμα:

Integer myInt = new Integer(10); // Δημιουργία αντικειμένου Integer με τιμή 10
int myPrimitiveInt = myInt.intValue(); // Μετατροπή του αντικειμένου Integer σε πρωτογενή ακέραιο αριθμό

[adinserter block=”3″]

Στο παραπάνω παράδειγμα, δημιουργούμε ένα αντικείμενο Integer με τιμή 10, και μετά το μετατρέπουμε σε ένα πρωτογενή ακέραιο αριθμό, χρησιμοποιώντας τη μέθοδο intValue() του Integer wrapper class.

Οι wrapper κλάσεις χρησιμοποιούνται συνήθως για να μετατρέψουν έναν πρωτογενή τύπο δεδομένων σε ένα αντικείμενο. Αυτό μας επιτρέπει να χρησιμοποιήσουμε το αντικείμενο ως παράμετρο σε μεθόδους, να το αποθηκεύσουμε σε συλλογές (collections), να το συγκρίνουμε με άλλα αντικείμενα, κ.λπ.

Τα παραδείγματα που παρουσιάστηκαν παραπάνω δείχνουν πώς μπορούμε να χρησιμοποιήσουμε τις μεθόδους xxxValue() που παρέχονται από τις wrapper κλάσεις για να αντλήσουμε την τιμή που συνδέεται με ένα συγκεκριμένο αντικείμενο wrapper. Αυτό είναι ιδιαίτερα χρήσιμο όταν χρειαζόμαστε να εκτελέσουμε μια λειτουργία που δεν υποστηρίζει αντικείμενα wrapper απευθείας.

Εδώ είναι ένα ακόμη παράδειγμα που δείχνει πώς μπορούμε να χρησιμοποιήσουμε τη μέθοδο doubleValue() του αντικειμένου Double για να πάρουμε την αντίστοιχη διπλή τιμή:

Double myDouble = new Double(3.14);
double myPrimitiveDouble = myDouble.doubleValue();
System.out.println(myPrimitiveDouble); // Εκτύπωση: 3.14

Στο παραπάνω παράδειγμα, δημιουργούμε ένα αντικείμενο Double με τιμή 3.14, και μετά το μετατρέπουμε σε ένα πρωτογενή ακέραιο αριθμό, χρησιμοποιώντας τη μέθοδο doubleValue() του Double wrapper class.

16 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων