This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
java:generics [2015/03/19 12:13] gthanos [Παραμετρικοί τύποι δεδομένων (Generics)] |
java:generics [2015/03/19 13:29] gthanos [Παραμετρικοί τύποι δεδομένων (Generics)] |
||
---|---|---|---|
Line 51: | Line 51: | ||
Η παραπάνω δήλωση της κλάσης //Box// σημαίνει ότι κατά τον ορισμό αντικειμένων της κλάσης αυτά θα πρέπει να προσδιορίζεται ανάμεσα στους χαρακτήρες '<', ΄>' ένας επιπλέον reference τύπος δεδομένων, δηλ μπορούμε να γράψουμε | Η παραπάνω δήλωση της κλάσης //Box// σημαίνει ότι κατά τον ορισμό αντικειμένων της κλάσης αυτά θα πρέπει να προσδιορίζεται ανάμεσα στους χαρακτήρες '<', ΄>' ένας επιπλέον reference τύπος δεδομένων, δηλ μπορούμε να γράψουμε | ||
<code java> | <code java> | ||
- | Box<String> = new Box<String>(); | + | Box<String> b1 = new Box<String>(); |
- | Box<Integer> = new Box<Integer>(); | + | Box<Integer> b2 = new Box<Integer>(); |
- | Box<Student> = new Box<Student>(); // όπου Student μία κλάση που έχουμε κατασκευάσει. | + | Box<Student> b3 = new Box<Student>(); // όπου Student μία κλάση που έχουμε κατασκευάσει. |
</code> | </code> | ||
- | Ο τύπος δεδομένων που χρησιμοποιούμε ανάμεσα στους χαρακτήρες '<', ΄>' είναι ο τύπος δεδομένων που επιτρέπεται να αποθηκευθεί στην κλάση Box κάθε φορά. Αντικείμενα της κλάσης Box ορίζεται συνήθως σε συνδυασμό με ένα reference τύπο δεδομένων, όπως δείξαμε προηγούμενα. Υπάρχει η δυνατότητα να ορίσετε ένα αντικείμενο της κλάσης Box χωρίς την χρήση της επιπλέον παραμέτρου. Σε αυτή την περίπτωση ο compiler δεν είναι σε θέση να γνωρίζει τον τύπο δεδομένων που θα τοποθετήσετε στο συγκεκριμένο αντικείμενο. | + | Ο τύπος δεδομένων που χρησιμοποιούμε ανάμεσα στους χαρακτήρες '<', ΄>' είναι ο τύπος δεδομένων που επιτρέπεται να αποθηκευθεί στην κλάση //Box// κάθε φορά. |
+ | |||
+ | Αντικείμενα της κλάσης Box ορίζονται συνήθως σε συνδυασμό με ένα reference τύπο δεδομένων, όπως δείξαμε προηγούμενα. Υπάρχει η δυνατότητα να ορίσετε ένα αντικείμενο της κλάσης //Box// χωρίς την χρήση της επιπλέον παραμέτρου, δηλ | ||
+ | <code java> | ||
+ | Box b = new Box() | ||
+ | </code> | ||
+ | Σε αυτή την περίπτωση ο compiler δεν είναι σε θέση να γνωρίζει τον τύπο δεδομένων που θα τοποθετήσετε στο συγκεκριμένο αντικείμενο. Ουσιαστικά η παραπάνω δήλωση ισοδυναμεί με μία δήλωση της μορφής | ||
+ | <code java> | ||
+ | Box<Object> b = new Box<Object>(); | ||
+ | </code> | ||
+ | Η προσπάθεια μεταγλώττισης του παρακάτω κώδικα καταδεικνύει το παραπάνω | ||
+ | <code java BoxUsage.java> | ||
+ | public class BoxUsage { | ||
+ | public static void main(String args[]) { | ||
+ | Box b = new Box(5); | ||
+ | Box<Number> bn = new Box<Number>(); | ||
+ | bn.set(b.get()); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | Αν αλλάξετε την γραμμή ''Box<Number> bn = new Box<Number>();'' σε ''Box<Object> bn = new Box<Object>();'' το compilation error εξαφανίζεται και εμφανίζεται ένα warning. | ||
===== Ονοματολογία παραμέτρων ===== | ===== Ονοματολογία παραμέτρων ===== |