User Tools

Site Tools


java:generic_methods

This is an old revision of the document!


Παραμετρικές Μέθοδοι (Generic Methods)

Generic Methods ονομάζονται οι μέθοδοι οι οποίες εισάγουν τους δικούς τους παραμετρικούς τύπους δεδομένων, χωρίς η κλάση στην οποία ανήκουν να εισάγει αντίστοιχους παραμετρικούς τύπους δεδομένων, όπως παρακάτω:

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());
  }
}

Ο κώδικας για να καλέσετε μία έκδοση της παραπάνω μεθόδου δίνεται παρακάτω

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");
    }
  }
}

Μπορείτε να αντικαταστήσετε την τελευταία γραμμή με την γραμμή σε σχόλια. Παρατηρήστε ότι ο compiler δεν σας αφήνει να καλέσετε την μη παραμετρική έκδοση της μεθόδου. Επίσης αν χρησιμοποιήσετε άλλους τύπους δεδομένων (π.χ. <Integer, Integer>) τότε και πάλι θα λάβετε ένα μήνυμα λάθους.

java/generic_methods.1426773562.txt.gz · Last modified: 2015/03/19 13:59 by gthanos