This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
java:generic_bounded_types [2015/03/19 15:52] gthanos [Μη φραγμένοι παραμετρικοί τύποι (Unbounded Wildcards)] |
java:generic_bounded_types [2015/03/19 16:42] gthanos |
||
---|---|---|---|
Line 59: | Line 59: | ||
{{ :java:generics_inheritance3.png?500 |}} | {{ :java:generics_inheritance3.png?500 |}} | ||
+ | Γενικότερα, σχέσεις κληρονομικότητας μεταξύ φραγμένων τύπων ισχύουν με κριτήρια κατά πόσο μπορούμε να αντικαταστήσουμε ένα τύπο δεδομένων με έναν άλλο τύπο δεδομένων. Δείτε τα παρακάτω παραδείγματα κληρονομικότητας | ||
+ | <code java> | ||
+ | List<?> | ||
+ | | | ||
+ | v | ||
+ | List<? extends Number> | ||
+ | | | ||
+ | v | ||
+ | List<? extends Integer> | ||
+ | | | ||
+ | v | ||
+ | List<Integer> | ||
+ | </code> | ||
- | Γενικότερα προκειμένου να δημιουργήσουμε σχέσεις κληρονομικότητας μεταξύ παραμετρικών τύπων δεδομένων, ο μόνος τρόπος για να το κάνουμε είναι να χρησιμοποιήσουμε φραγμένους παραμετρικούς τύπους, όπως παρακάτω | + | Αντίστοιχα ισχύουν |
+ | <code java> | ||
+ | List<?> | ||
+ | | | ||
+ | v | ||
+ | List<? super Integer> | ||
+ | | | ||
+ | v | ||
+ | List<? super Number> | ||
+ | | | ||
+ | v | ||
+ | List<Number> | ||
+ | </code> | ||
+ | |||
+ | Ανάλογα μπορούν ισχύουν και τα παρακάτω | ||
+ | <code java> | ||
+ | List<? extends Number> List<? super Integer> | ||
+ | | και | | ||
+ | ------------------------------------ ------------------------------------ | ||
+ | | | | | | ||
+ | v v v v | ||
+ | List<Number> List<Integer> List<Number> List<Integer> | ||
+ | </code> | ||
+ | |||
+ | Στο παρακάτω παράδειγμα δοκιμάστε να αν | ||
<code java> | <code java> | ||
List<? extends Integer> intList = new ArrayList<>(); | List<? extends Integer> intList = new ArrayList<>(); |