java:generic_methods

This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

====== Παραμετρικές Μέθοδοι (Generic Methods) ====== Generic Methods ονομάζονται οι μέθοδοι οι οποίες εισάγουν τους δικούς τους παραμετρικούς τύπους δεδομένων, χωρίς η κλάση στην οποία ανήκουν να εισάγει αντίστοιχους παραμετρικούς τύπους δεδομένων, όπως παρακάτω: <code java Util.java> public class Util { public static <K, V> boolean compare(Pair<K, V> p1, Pair<K, V> p2) { return p1.getKey().equals(p2.getKey()) && p1.getValue().equals(p2.getValue()); } } </code> Ο κώδικας για να καλέσετε μία έκδοση της παραπάνω μεθόδου δίνεται παρακάτω <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, 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> Μπορείτε να αντικαταστήσετε την τελευταία γραμμή με την γραμμή σε σχόλια. Ο 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>

java/generic_methods.1426774806.txt.gz · Last modified: 2016/02/26 11:15 (external edit)