This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
java:generic_methods [2015/03/15 21:46] gthanos |
java:generic_methods [2016/02/26 11:15] (current) |
||
---|---|---|---|
Line 2: | Line 2: | ||
Generic Methods ονομάζονται οι μέθοδοι οι οποίες εισάγουν τους δικούς τους παραμετρικούς τύπους δεδομένων, χωρίς η κλάση στην οποία ανήκουν να εισάγει αντίστοιχους παραμετρικούς τύπους δεδομένων, όπως παρακάτω: | Generic Methods ονομάζονται οι μέθοδοι οι οποίες εισάγουν τους δικούς τους παραμετρικούς τύπους δεδομένων, χωρίς η κλάση στην οποία ανήκουν να εισάγει αντίστοιχους παραμετρικούς τύπους δεδομένων, όπως παρακάτω: | ||
- | <code java> | + | <code java Util.java> |
public class Util { | public class Util { | ||
public static <K, V> boolean compare(Pair<K, V> p1, Pair<K, V> p2) { | public static <K, V> boolean compare(Pair<K, V> p1, Pair<K, V> p2) { | ||
Line 12: | Line 12: | ||
Ο κώδικας για να καλέσετε μία έκδοση της παραπάνω μεθόδου δίνεται παρακάτω | Ο κώδικας για να καλέσετε μία έκδοση της παραπάνω μεθόδου δίνεται παρακάτω | ||
- | <code java> | + | <code java OrderedPairUsage.java> |
- | Pair<Integer, String> p1 = new Pair<>(1, "apple"); | + | public class OrderedPairUsage { |
- | Pair<Integer, String> p2 = new Pair<>(2, "pear"); | + | public static void main(String args[]) { |
- | boolean same = Util.<Integer, String>compare(p1, p2); | + | Pair<Integer, String> p1 = |
- | //OR boolean same = Util.compare(p1, p2); | + | new OrderedPair<>(1, "Black"); |
+ | Pair<Integer, String> p2 = | ||
+ | new OrderedPair<>(1, "Red"); | ||
+ | boolean same = Util.<Integer, String>compare(p1, p2); | ||
+ | //OR boolean same = Util.compare(p1, p2); | ||
+ | if( same ) { | ||
+ | System.out.println("p1 is equal to p2"); | ||
+ | } | ||
+ | else { | ||
+ | System.out.println("p1 is NOT equal to p2"); | ||
+ | } | ||
+ | } | ||
+ | } | ||
</code> | </code> | ||
- | Μπορείτε να αντικαταστήσετε την τελευταία γραμμή με την γραμμή σε σχόλια, καθώς ο compiler αντιλαμβάνεται από τον τύπο των ορισμάτων με τα οποία καλείται η μέθοδος τους αντίστοιχους παραμετρικούς τύπους δεδομένων. | + | Μπορείτε να αντικαταστήσετε την τελευταία γραμμή με την γραμμή σε σχόλια. Ο compiler έχει την δυνατότητα να αντιλαμβάνεται τους τύπους των παραμέτρων της μεθόδου από τα ορίσματα της μεθόδου. |
+ | |||
+ | Δοκιμάστε να μεταγλωττίσετε τις παρακάτω δύο παραλλαγές του κώδικα και δείτε τα μηνύματα που θα σας βγάλει ο compiler. | ||
+ | <code java OrderedPairUsage.java> | ||
+ | public class OrderedPairUsage { | ||
+ | public static void main(String args[]) { | ||
+ | Pair<Integer, String> p1 = | ||
+ | new OrderedPair<>(1, "Black"); | ||
+ | Pair<Integer, String> p2 = | ||
+ | new OrderedPair<>(1, "Red"); | ||
+ | boolean same = Util.<Integer, Integer>compare(p1, p2); | ||
+ | if( same ) { | ||
+ | System.out.println("p1 is equal to p2"); | ||
+ | } | ||
+ | else { | ||
+ | System.out.println("p1 is NOT equal to p2"); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | <code java OrderedPairUsage.java> | ||
+ | public class OrderedPairUsage { | ||
+ | public static void main(String args[]) { | ||
+ | Pair<Integer, String> p1 = | ||
+ | new OrderedPair<>(1, "Black"); | ||
+ | Pair<Integer, Integer> p2 = | ||
+ | new OrderedPair<>(1, 3); | ||
+ | boolean same = Util.compare(p1, p2); | ||
+ | if( same ) { | ||
+ | System.out.println("p1 is equal to p2"); | ||
+ | } | ||
+ | else { | ||
+ | System.out.println("p1 is NOT equal to p2"); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </code> | ||