java:generic_bounded_types

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
java:generic_bounded_types [2015/03/19 15:52]
gthanos [Μη φραγμένοι παραμετρικοί τύποι (Unbounded Wildcards)]
java:generic_bounded_types [2016/02/26 11:15] (current)
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> 
 +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 |}}
  
java/generic_bounded_types.1426780342.txt.gz · Last modified: 2016/02/26 11:15 (external edit)