This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
java:generic_bounded_types [2015/03/19 16:32] gthanos [Σχέσεις κληρονομικότητας φραγμένων παραμετρικών τύπων δεδομένων] |
java:generic_bounded_types [2016/02/26 11:15] (current) |
||
|---|---|---|---|
| Line 73: | Line 73: | ||
| </code> | </code> | ||
| - | Αντίστοιχα | + | Αντίστοιχα ισχύουν |
| <code java> | <code java> | ||
| List<?> | List<?> | ||
| Line 87: | Line 87: | ||
| </code> | </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> | ||
| + | |||
| + | |||
| - | Το παρακάτω σχήμα εξηγεί τις σχέσεις κληρονομικότητας που διέπουν (άνω και κάτω) φραγμένους τύπους δεδομένων (Λίστες). | + | Το παρακάτω σχήμα εξηγεί τις σχέσεις κληρονομικότητας που διέπουν (άνω και κάτω) φραγμένους τύπους δεδομένων για τον παραμετρικό τύπο δεδομένων της λίστας. |
| {{ :java:generics_inheritance4.png?500 |}} | {{ :java:generics_inheritance4.png?500 |}} | ||