java:generic_bounded_types
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
java:generic_bounded_types [2015/03/19 16:54] – [Σχέσεις κληρονομικότητας φραγμένων παραμετρικών τύπων δεδομένων] gthanos | java:generic_bounded_types [2020/03/11 07:40] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
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 19: | Line 24: | ||
</ | </ | ||
- | Στην παραπάνω δήλωση ο τύπος δεδομένων της παραμετρικής κλάσης '' | + | Στην παραπάνω δήλωση ο τύπος δεδομένων της παραμετρικής κλάσης '' |
===== Μη φραγμένοι παραμετρικοί τύποι (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? | + | |
- | + | ||
- | Γενικότερα, | + | |
- | <code java> | + | |
- | List<?> | + | |
- | | | + | |
- | v | + | |
- | | + | |
- | | | + | |
- | v | + | |
- | | + | |
- | | | + | |
- | v | + | |
- | List< | + | |
- | </ | + | |
- | + | ||
- | Αντίστοιχα ισχύουν | + | |
- | <code java> | + | |
- | List<?> | + | |
- | | | + | |
- | v | + | |
- | | + | |
- | | | + | |
- | v | + | |
- | | + | |
- | | | + | |
- | v | + | |
- | List< | + | |
- | </ | + | |
- | + | ||
- | Ανάλογα ισχύουν και τα παρακάτω | + | |
- | <code java> | + | |
- | List<? extends Number> | + | |
- | | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | </ | + | |
- | + | ||
- | Δοκιμάστε | + | |
- | <code java> | + | |
- | List<? extends Νumber> numList = new ArrayList<> | + | |
- | List<?> | + | |
- | </ | + | |
- | <code java> | + | |
- | List<? extends Integer> intList = new ArrayList<> | + | |
- | List<? extends Number> | + | |
- | </ | + | |
- | <code java> | + | |
- | List< | + | |
- | List<? extends Integer> extendedIntList = intList; | + | |
- | </ | + | |
- | + | ||
- | Ανάλογα | + | |
- | <code java> | + | |
- | List<? super Integer> intList = new ArrayList<> | + | |
- | List<?> | + | |
- | </ | + | |
- | <code java> | + | |
- | List<? super Number> numList = new ArrayList<> | + | |
- | List<? super Integer> inList = numList; | + | |
- | </ | + | |
- | <code java> | + | |
- | List< | + | |
- | List<? super Number> extendedNumList = numList; | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | + | ||
- | Το παρακάτω σχήμα εξηγεί τις σχέσεις κληρονομικότητας που διέπουν (άνω και κάτω) φραγμένους τύπους δεδομένων (Λίστες). | + | |
- | {{ : | + | |
java/generic_bounded_types.1426784083.txt.gz · Last modified: 2015/03/19 16:54 (external edit)