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
Last revision Both sides next revision
java:generic_methods [2015/03/19 14:02]
gthanos
java:generic_methods [2020/03/10 09:58]
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 areEqual(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> +<code java SimplePairUsage.java> 
-public class OrderedPairUsage {+public class SimplePairUsage {
   public static void main(String args[]) {   public static void main(String args[]) {
-    Pair<Integer, String> p1 =  +    Pair<Integer, String> p1 = new SimplePair<>(1, "Black"); 
-      new OrderedPair<>(1, "Black"); +    Pair<Integer, String> p2 = new SimplePair<>(1, "Red"); 
-    Pair<Integer, String> p2 =  +    boolean same = Util.<Integer, String>areEqual(p1, p2); 
-      new OrderedPair<>(1, "Red"); +    //OR boolean same = Util.isEqual(p1, p2);
-    boolean same = Util.<Integer, String>compare(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 30:
 </code> </code>
  
-Μπορείτε να αντικαταστήσετε την τελευταία γραμμή με την γραμμή σε σχόλια. Επίσης αν χρησιμοποιήσετε άλλους τύπους δεδομένων (π.χ''<Integer, Integer>''τότε και πάλι θα λάβετε ένα μήνυμα λάθους.+Μπορείτε να αντικαταστήσετε την τελευταία γραμμή με την γραμμή σε σχόλια. Ο //compiler// έχει την δυνατότητα να αντιλαμβάνεται τους τύπους των παραμέτρων της μεθόδου από τα ορίσματα της μεθόδου. 
 + 
 +<WRAP todo 80% center round> 
 +Δοκιμάστε να μεταγλωττίσετε τις παρακάτω δύο παραλλαγές του κώδικα και δείτε τα μηνύματα που θα σας βγάλει ο compiler. 
 +</WRAP> 
 + 
 +<code java SimplePairUsage.java> 
 +public class SimplePairUsage { 
 +  public static void main(String args[]) { 
 +    Pair<Integer, String> p1 = new SimplePair<>(1, "Black"); 
 +    Pair<Integer, String> p2 = new SimplePair<>(1, "Red"); 
 +    boolean same = Util.<Integer, Integer>areEqual(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 SimplePairUsage.java> 
 +public class SimplePairUsage { 
 +  public static void main(String args[]) { 
 +    Pair<Integer, String> p1 = new SimplePair<>(1, "Black"); 
 +    Pair<Integer, Integer> p2 = new SimplePair<>(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