====== Παραμετρικοί τύποι δεδομένων σε μεθόδους (Generic Methods) ====== //Generic Methods// ονομάζονται οι μέθοδοι οι οποίες εισάγουν τους δικούς τους παραμετρικούς τύπους δεδομένων, χωρίς η κλάση στην οποία ανήκουν να εισάγει αντίστοιχους παραμετρικούς τύπους δεδομένων, όπως παρακάτω: public class Util { public static boolean areEqual(Pair p1, Pair p2) { return p1.getKey().equals(p2.getKey()) && p1.getValue().equals(p2.getValue()); } } Ο κώδικας για να καλέσετε μία έκδοση της παραπάνω μεθόδου δίνεται παρακάτω public class SimplePairUsage { public static void main(String args[]) { Pair p1 = new SimplePair<>(1, "Black"); Pair p2 = new SimplePair<>(1, "Red"); boolean same = Util.areEqual(p1, p2); //OR boolean same = Util.areEqual(p1, p2); if( same ) { System.out.println("p1 is equal to p2"); } else { System.out.println("p1 is NOT equal to p2"); } } } Μπορείτε να αντικαταστήσετε την τελευταία γραμμή με την γραμμή σε σχόλια. Ο //compiler// έχει την δυνατότητα να αντιλαμβάνεται τους τύπους των παραμέτρων της μεθόδου από τα ορίσματα της μεθόδου. Δοκιμάστε να μεταγλωττίσετε τις παρακάτω δύο παραλλαγές του κώδικα και δείτε τα μηνύματα που θα σας βγάλει ο compiler. public class SimplePairUsage { public static void main(String args[]) { Pair p1 = new SimplePair<>(1, "Black"); Pair p2 = new SimplePair<>(1, "Red"); boolean same = Util.areEqual(p1, p2); if( same ) { System.out.println("p1 is equal to p2"); } else { System.out.println("p1 is NOT equal to p2"); } } } public class SimplePairUsage { public static void main(String args[]) { Pair p1 = new SimplePair<>(1, "Black"); Pair p2 = new SimplePair<>(1, 3); boolean same = Util.areEqual(p1, p2); if( same ) { System.out.println("p1 is equal to p2"); } else { System.out.println("p1 is NOT equal to p2"); } } } |Προηγούμενο: [[:java:generics_raw | Απλοί παραμετρικοί τύποι δεδομένων (Raw Generic Types) ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:generics_inheritance | Κληρονομικότητα Παραμετρικών Τύπων ]] |