This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
java:generic_bounded_types [2015/03/19 15:44] gthanos |
java:generic_bounded_types [2015/03/19 15:52] gthanos [Μη φραγμένοι παραμετρικοί τύποι (Unbounded Wildcards)] |
||
---|---|---|---|
Line 32: | Line 32: | ||
</code> | </code> | ||
- | Ο παραπάνω κώδικας τυπώνει αντικείμενα από μία λίστα αντικειμένων τύπου ''Οbject''. Λόγω των περιορισμών στην κληρονομικότητα που είδαμε προηγούμενα ο ίδιος κώδικας δεν μπορεί να χρησιμοποιηθεί για να τυπώσει αντικείμενα τύπου ''List<String>'' ή ''List<Integer>''. Κατά συνέπεια | + | Ο παραπάνω κώδικας τυπώνει αντικείμενα από μία λίστα αντικειμένων τύπου ''Οbject''. Λόγω των περιορισμών στην κληρονομικότητα που είδαμε προηγούμενα ο ίδιος κώδικας δεν μπορεί να χρησιμοποιηθεί για να τυπώσει αντικείμενα τύπου ''List<String>'' ή ''List<Integer>'' καθώς δεν μπορούμε να τοποθετήσουμε στην παράμετρο ''List<Object>'' ένα αντικείμενο άλλης κλάσης. Κατά συνέπεια θα χρειαστούμε ένα άλλο τρόπο γραφής της συγκεκριμένης κλάσης, ώστε να απαντά στην γενικότητα. |
Αν θέλουμε να γράψουμε μία αρκετά γενική μέθοδο λίστας που να τυπώνει λίστες οποιουδήποτε αντικειμένου αρκεί να γράψετε το παρακάτω | Αν θέλουμε να γράψουμε μία αρκετά γενική μέθοδο λίστας που να τυπώνει λίστες οποιουδήποτε αντικειμένου αρκεί να γράψετε το παρακάτω | ||
Line 40: | Line 40: | ||
for (Object elem: list) | for (Object elem: list) | ||
System.out.print(elem + " "); | System.out.print(elem + " "); | ||
+ | System.out.println(); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Αντίστοιχα, αν θέλουμε να γράψουμε μία μέθοδο που να τυπώνει μόνο αριθμούς (υποκλάσεις της //abstract// κλάσης ''Number'') τότε αρκεί να γράψουμε το παρακάτω | ||
+ | |||
+ | <code java> | ||
+ | public static void printΝumbers(List<? extends Number> list) { | ||
+ | for (Number num: list) | ||
+ | System.out.print(num + " "); | ||
System.out.println(); | System.out.println(); | ||
} | } |