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 16:30] gthanos [Σχέσεις κληρονομικότητας φραγμένων παραμετρικών τύπων δεδομένων] |
java:generic_bounded_types [2015/03/19 16:54] gthanos [Σχέσεις κληρονομικότητας φραγμένων παραμετρικών τύπων δεδομένων] |
||
|---|---|---|---|
| Line 73: | Line 73: | ||
| </code> | </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> | ||
| + | List<? extends Νumber> numList = new ArrayList<>(); | ||
| + | List<?> objectList = numList; | ||
| + | </code> | ||
| <code java> | <code java> | ||
| List<? extends Integer> intList = new ArrayList<>(); | List<? extends Integer> intList = new ArrayList<>(); | ||
| - | List<? extends Number> numList = intList; // OK. List<? extends Integer> is a subtype of List<? extends Number> | + | List<? extends Number> numList = intList; |
| </code> | </code> | ||
| + | <code java> | ||
| + | List<Integer> intList = new ArrayList<>(); | ||
| + | List<? extends Integer> extendedIntList = intList; | ||
| + | </code> | ||
| + | |||
| + | Ανάλογα | ||
| + | <code java> | ||
| + | List<? super Integer> intList = new ArrayList<>(); | ||
| + | List<?> objectList = intList; | ||
| + | </code> | ||
| + | <code java> | ||
| + | List<? super Number> numList = new ArrayList<>(); | ||
| + | List<? super Integer> inList = numList; | ||
| + | </code> | ||
| + | <code java> | ||
| + | List<Number> numList = new ArrayList<>(); | ||
| + | List<? super Number> extendedNumList = numList; | ||
| + | </code> | ||
| + | |||
| + | |||
| Το παρακάτω σχήμα εξηγεί τις σχέσεις κληρονομικότητας που διέπουν (άνω και κάτω) φραγμένους τύπους δεδομένων (Λίστες). | Το παρακάτω σχήμα εξηγεί τις σχέσεις κληρονομικότητας που διέπουν (άνω και κάτω) φραγμένους τύπους δεδομένων (Λίστες). | ||