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 [2020/03/10 10:23] gthanos [Μη φραγμένοι παραμετρικοί τύποι (Unbounded Wildcards)] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Φραγμένοι παραμετρικοί τύπων δεδομένων ====== | + | ====== Φραγμένοι παραμετρικοί τύποι δεδομένων ====== |
| + | |||
| + | Παρακάτω αναλύονται 3 υποκατηγορίες παραμετρικών τύπων δεδομένων | ||
| + | * οι άνω φραγμένοι παραμετρικοί τύποι | ||
| + | * οι κάτω φραγμένοι και | ||
| + | * οι μη φραγμένοι | ||
| ===== Άνω φραγμένοι παραμετρικοί τύποι (Upper Bounded Wildcards) ===== | ===== Άνω φραγμένοι παραμετρικοί τύποι (Upper Bounded Wildcards) ===== | ||
| <code java> | <code java> | ||
| - | public static void process(List<? | + | public static void process(List<? |
| </ | </ | ||
| - | Στην παραπάνω δήλωση ο τύπος δεδομένων της παραμετρικής κλάσης '' | + | Στην παραπάνω δήλωση ο τύπος δεδομένων της παραμετρικής κλάσης '' |
| ===== Κάτω φραγμένοι παραμετρικοί τύποι (Lower Bounded Wildcards) ===== | ===== Κάτω φραγμένοι παραμετρικοί τύποι (Lower Bounded Wildcards) ===== | ||
| Line 20: | Line 25: | ||
| Στην παραπάνω δήλωση ο τύπος δεδομένων της παραμετρικής κλάσης '' | Στην παραπάνω δήλωση ο τύπος δεδομένων της παραμετρικής κλάσης '' | ||
| + | |||
| ===== Μη φραγμένοι παραμετρικοί τύποι (Unbounded Wildcards) ===== | ===== Μη φραγμένοι παραμετρικοί τύποι (Unbounded Wildcards) ===== | ||
| - | Ας εξετάσουμε τους μη φραγμένους παραμετρικούς τύπους μέσα το παρακάτω παράδειγμα. | + | Θα εξετάσουμε τους μη φραγμένους παραμετρικούς τύπους μέσα το παρακάτω παράδειγμα. |
| <code java> | <code java> | ||
| public static void printList(List< | public static void printList(List< | ||
| Line 32: | Line 38: | ||
| </ | </ | ||
| - | Ο παραπάνω κώδικας τυπώνει αντικείμενα από μία λίστα αντικειμένων τύπου '' | + | Ο παραπάνω κώδικας τυπώνει αντικείμενα από μία λίστα αντικειμένων τύπου '' |
| - | Αν θέλουμε να γράψουμε μία αρκετά γενική μέθοδο λίστας που να τυπώνει λίστες οποιουδήποτε αντικειμένου αρκεί να γράψετε το παρακάτω | + | Αν θέλουμε να γράψουμε μία αρκετά γενική μέθοδο λίστας που να τυπώνει λίστες οποιουδήποτε αντικειμένου αρκεί να γράψουμε το παρακάτω |
| <code java> | <code java> | ||
| Line 44: | Line 50: | ||
| </ | </ | ||
| - | Αντίστοιχα, αν θέλουμε να γράψουμε μία μέθοδο που να τυπώνει μόνο αριθμούς (υποκλάσεις της // | + | Σε αναλογία με το παραπάνω, εάν θέλουμε να γράψουμε μία μέθοδο που να τυπώνει μόνο αριθμούς, αλλά όχι String |
| <code java> | <code java> | ||
| Line 54: | Line 60: | ||
| </ | </ | ||
| - | ===== Σχέσεις κληρονομικότητας φραγμένων παραμετρικών τύπων δεδομένων ===== | + | |Προηγούμενο: [[: |
| - | + | ||
| - | Όπως είδαμε οι τύποι '' | + | |
| - | {{ :java:generics_inheritance3.png? | + | |
| - | + | ||
| - | Γενικότερα, σχέσεις κληρονομικότητας | + | |
| - | < | + | |
| - | List<?> | + | |
| - | | | + | |
| - | v | + | |
| - | | + | |
| - | | | + | |
| - | v | + | |
| - | | + | |
| - | | | + | |
| - | v | + | |
| - | List< | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | προκειμένου να δημιουργήσουμε σχέσεις κληρονομικότητας | + | |
| - | <code java> | + | |
| - | List<? extends Integer> intList = new ArrayList<> | + | |
| - | List<? extends Number> | + | |
| - | </ | + | |
| - | + | ||
| - | Το παρακάτω σχήμα εξηγεί τις σχέσεις κληρονομικότητας που διέπουν (άνω και κάτω) φραγμένους τύπους | + | |
| - | {{ : | + | |