This shows you the differences between two versions of the page.
|
java:generic_bounded_types [2015/03/19 15:52] gthanos [Μη φραγμένοι παραμετρικοί τύποι (Unbounded Wildcards)] |
java:generic_bounded_types [2020/03/11 07:40] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Φραγμένοι παραμετρικοί τύπων δεδομένων ====== | ||
| - | |||
| - | ===== Άνω φραγμένοι παραμετρικοί τύποι (Upper Bounded Wildcards) ===== | ||
| - | |||
| - | <code java> | ||
| - | public static void process(List<? | ||
| - | </ | ||
| - | |||
| - | Στην παραπάνω δήλωση ο τύπος δεδομένων της παραμετρικής κλάσης '' | ||
| - | |||
| - | ===== Κάτω φραγμένοι παραμετρικοί τύποι (Lower Bounded Wildcards) ===== | ||
| - | |||
| - | <code java> | ||
| - | public static void addNumbers(List<? | ||
| - | for (int i = 1; i <= 10; i++) { | ||
| - | list.add(i); | ||
| - | } | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Στην παραπάνω δήλωση ο τύπος δεδομένων της παραμετρικής κλάσης '' | ||
| - | |||
| - | ===== Μη φραγμένοι παραμετρικοί τύποι (Unbounded Wildcards) ===== | ||
| - | |||
| - | Ας εξετάσουμε τους μη φραγμένους παραμετρικούς τύπους μέσα το παρακάτω παράδειγμα. | ||
| - | <code java> | ||
| - | public static void printList(List< | ||
| - | for (Object elem : list) | ||
| - | System.out.println(elem + " "); | ||
| - | System.out.println(); | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ο παραπάνω κώδικας τυπώνει αντικείμενα από μία λίστα αντικειμένων τύπου '' | ||
| - | |||
| - | Αν θέλουμε να γράψουμε μία αρκετά γενική μέθοδο λίστας που να τυπώνει λίστες οποιουδήποτε αντικειμένου αρκεί να γράψετε το παρακάτω | ||
| - | |||
| - | <code java> | ||
| - | public static void printList(List<?> | ||
| - | for (Object elem: list) | ||
| - | System.out.print(elem + " "); | ||
| - | System.out.println(); | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Αντίστοιχα, | ||
| - | |||
| - | <code java> | ||
| - | public static void printΝumbers(List<? | ||
| - | for (Number num: list) | ||
| - | System.out.print(num + " "); | ||
| - | System.out.println(); | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== Σχέσεις κληρονομικότητας φραγμένων παραμετρικών τύπων δεδομένων ===== | ||
| - | |||
| - | Όπως είδαμε οι τύποι '' | ||
| - | {{ : | ||
| - | |||
| - | |||
| - | Γενικότερα προκειμένου να δημιουργήσουμε σχέσεις κληρονομικότητας μεταξύ παραμετρικών τύπων δεδομένων, | ||
| - | <code java> | ||
| - | List<? extends Integer> intList = new ArrayList<> | ||
| - | List<? extends Number> | ||
| - | </ | ||
| - | |||
| - | Το παρακάτω σχήμα εξηγεί τις σχέσεις κληρονομικότητας που διέπουν (άνω και κάτω) φραγμένους τύπους δεδομένων (Λίστες). | ||
| - | {{ : | ||
| - | |||
| - | |||
| - | |||