====== Φραγμένοι παραμετρικοί τύπων δεδομένων ======
===== Άνω φραγμένοι παραμετρικοί τύποι (Upper Bounded Wildcards) =====
public static void process(List extends Number> list) { /* ... */ }
Στην παραπάνω δήλωση ο τύπος δεδομένων της παραμετρικής κλάσης ''List'' μπορεί να είναι η κλάση ''Number'' η οποιαδήποτε υποκλάση της ''Number'' (π.χ ''Integer'', ''Double'', ''Float'').
===== Κάτω φραγμένοι παραμετρικοί τύποι (Lower Bounded Wildcards) =====
public static void addNumbers(List super Integer> list) {
for (int i = 1; i <= 10; i++) {
list.add(i);
}
}
Στην παραπάνω δήλωση ο τύπος δεδομένων της παραμετρικής κλάσης ''List'' μπορεί να είναι η κλάση ''Integer'' ή οποιαδήποτε υπερ-κλάση της ''Integer'' (π.χ ''Number'').
===== Μη φραγμένοι παραμετρικοί τύποι (Unbounded Wildcards) =====
Ας εξετάσουμε τους μη φραγμένους παραμετρικούς τύπους μέσα το παρακάτω παράδειγμα.
public static void printList(List
Ο παραπάνω κώδικας τυπώνει αντικείμενα από μία λίστα αντικειμένων τύπου ''Οbject''. Λόγω των περιορισμών στην κληρονομικότητα που είδαμε προηγούμενα ο ίδιος κώδικας δεν μπορεί να χρησιμοποιηθεί για να τυπώσει αντικείμενα τύπου ''List'' ή ''List'' καθώς δεν μπορούμε να τοποθετήσουμε στην παράμετρο ''List