User Tools

Site Tools


java:generic_methods

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
java:generic_methods [2015/03/19 13:59]
gthanos
java:generic_methods [2020/03/09 10:40]
gthanos
Line 1: Line 1:
-====== Παραμετρικές Μέθοδοι (Generic Methods) ======+====== Παραμετρικοί τύποι δεδομένων σε μεθόδους (Generic Methods) ====== 
 + 
 +//Generic Methods// ονομάζονται οι μέθοδοι οι οποίες εισάγουν τους δικούς τους παραμετρικούς τύπους δεδομένων, χωρίς η κλάση στην οποία ανήκουν να εισάγει αντίστοιχους παραμετρικούς τύπους δεδομένων, όπως παρακάτω:
  
-Generic Methods ονομάζονται οι μέθοδοι οι οποίες εισάγουν τους δικούς τους παραμετρικούς τύπους δεδομένων, χωρίς η κλάση στην οποία ανήκουν να εισάγει αντίστοιχους παραμετρικούς τύπους δεδομένων, όπως παρακάτω: 
 <code java Util.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 isEqual(Pair<K, V> p1, Pair<K, V> p2) {
     return p1.getKey().equals(p2.getKey()) &&     return p1.getKey().equals(p2.getKey()) &&
       p1.getValue().equals(p2.getValue());       p1.getValue().equals(p2.getValue());
Line 12: Line 13:
  
 Ο κώδικας για να καλέσετε μία έκδοση της παραπάνω μεθόδου δίνεται παρακάτω Ο κώδικας για να καλέσετε μία έκδοση της παραπάνω μεθόδου δίνεται παρακάτω
 +<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>isEqual(p1, p2);
 +    //OR boolean same = Util.isEqual(p1, p2);
 +    if( same ) {
 +      System.out.println("p1 is equal to p2");
 +    } 
 +    else {
 +      System.out.println("p1 is NOT equal to p2");
 +    }
 +  }
 +}
 +</code>
 +
 +Μπορείτε να αντικαταστήσετε την τελευταία γραμμή με την γραμμή σε σχόλια. Ο compiler έχει την δυνατότητα να αντιλαμβάνεται τους τύπους των παραμέτρων της μεθόδου από τα ορίσματα της μεθόδου.
 +
 +<WRAP todo 80% center round>
 +Δοκιμάστε να μεταγλωττίσετε τις παρακάτω δύο παραλλαγές του κώδικα και δείτε τα μηνύματα που θα σας βγάλει ο compiler.
 +</WRAP>
 +
 <code java OrderedPairUsage.java> <code java OrderedPairUsage.java>
 public class OrderedPairUsage { public class OrderedPairUsage {
Line 19: Line 43:
     Pair<Integer, String> p2 =      Pair<Integer, String> p2 = 
       new OrderedPair<>(1, "Red");       new OrderedPair<>(1, "Red");
-    boolean same = Util.<Integer, String>compare(p1, p2); +    boolean same = Util.<Integer, Integer>isEqual(p1, p2);
-    //OR boolean same = Util.compare(p1, p2);+
     if( same ) {     if( same ) {
       System.out.println("p1 is equal to p2");       System.out.println("p1 is equal to p2");
Line 31: Line 54:
 </code> </code>
  
-Μπορείτε να αντικαταστήσετε την τελευταία γραμμή με την γραμμή σε σχόλια. Παρατηρήστε ότι ο compiler δεν σας αφήνει να καλέσετε την μη παραμετρική έκδοση της μεθόδου. Επίσης αν χρησιμοποιήσετε άλλους τύπους δεδομένων (π.χ. ''<Integer, Integer>'') τότε και πάλι θα λάβετε ένα μήνυμα λάθους.+<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.isEqual(p1, p2); 
 +    if( same ) { 
 +      System.out.println("p1 is equal to p2"); 
 +    }  
 +    else { 
 +      System.out.println("p1 is NOT equal to p2"); 
 +    } 
 +  } 
 +
 +</code> 
 + 
 +|Προηγούμενο: [[:java:generics_raw | Απλοί παραμετρικοί τύποι δεδομένων (Raw Generic Types) ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:generics_inheritance | Κληρονομικότητα Παραμετρικών Τύπων ]] | 
  
java/generic_methods.txt · Last modified: 2020/03/10 10:19 by gthanos