Java Generics (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθουμε για το Java Generics, τον τρόπο δημιουργίας γενικής κλάσης και μεθόδων και τα πλεονεκτήματά του με τη βοήθεια παραδειγμάτων.

Το Java Generics μας επιτρέπει να δημιουργήσουμε μια ενιαία κλάση, διεπαφή και μέθοδο που μπορούν να χρησιμοποιηθούν με διαφορετικούς τύπους δεδομένων (αντικείμενα).

Αυτό μας βοηθά να επαναχρησιμοποιήσουμε τον κωδικό μας.

Σημείωση : Generics δεν λειτουργεί με πρωτόγονα είδη ( int, float, char, κλπ).

Τάξη Generics Java

Μπορούμε να δημιουργήσουμε μια κλάση που μπορεί να χρησιμοποιηθεί με οποιονδήποτε τύπο δεδομένων. Μια τέτοια τάξη είναι γνωστή ως Generics Class.

Δείτε πώς μπορούμε να δημιουργήσουμε μια τάξη γενικών στη Java:

Παράδειγμα: Δημιουργήστε μια τάξη Generics

 class Main ( public static void main(String() args) ( // initialize generic class // with Integer data GenericsClass intObj = new GenericsClass(5); System.out.println("Generic Class returns: " + intObj.getData()); // initialize generic class // with String data GenericsClass stringObj = new GenericsClass("Java Programming"); System.out.println("Generic Class returns: " + stringObj.getData()); ) ) // create a generics class class GenericsClass ( // variable of T type private T data; public GenericsClass(T data) ( this.data = data; ) // method that return T type variable public T getData() ( return this.data; ) )

Παραγωγή

 Επιστροφή γενικής κλάσης: 5 επιστροφές γενικής κλάσης: προγραμματισμός Java

Στο παραπάνω παράδειγμα, δημιουργήσαμε μια γενική τάξη με το όνομα GenericsClass. Αυτή η τάξη μπορεί να χρησιμοποιηθεί για εργασία με οποιονδήποτε τύπο δεδομένων.

 class GenericsClass (… )

Εδώ, το T που χρησιμοποιείται μέσα στο βραχίονα γωνίας υποδεικνύει την παράμετρο τύπου . Μέσα στην Mainτάξη, δημιουργήσαμε δύο αντικείμενα του GenericsClass

  • intObj - Εδώ, η παράμετρος τύπου T αντικαθίσταται από το Integer. Τώρα, το GenericsClass λειτουργεί με ακέραια δεδομένα.
  • stringObj - Εδώ, η παράμετρος τύπου T αντικαθίσταται από το String. Τώρα, το GenericsClass λειτουργεί με δεδομένα συμβολοσειράς.

Μέθοδος Java Generics

Παρόμοια με την κατηγορία γενικών, μπορούμε επίσης να δημιουργήσουμε μια μέθοδο που μπορεί να χρησιμοποιηθεί με οποιονδήποτε τύπο δεδομένων. Μια τέτοια τάξη είναι γνωστή ως Generics Method.

Δείτε πώς μπορούμε να δημιουργήσουμε μια τάξη γενικών στη Java:

Παράδειγμα: Δημιουργία μεθόδου Generics

 class Main ( public static void main(String() args) ( // initialize the class with Integer data DemoClass demo = new DemoClass(); // generics method working with String demo.genericsMethod("Java Programming"); // generics method working with integer demo.genericsMethod(25); ) ) class DemoClass ( // creae a generics method public void genericsMethod(T data) ( System.out.println("Generics Method:"); System.out.println("Data Passed: " + data); ) )

Παραγωγή

 Μέθοδος Generics: Passed Data: Java Programming Generics Method: Data Passed: 25

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει μια γενική μέθοδο που ονομάζεται genericsMethod.

 public void genericMethod(T data) (… )

Εδώ, η παράμετρος τύπου εισάγεται μετά τον τροποποιητή publicκαι πριν από τον τύπο επιστροφής void.

Μπορούμε να καλέσουμε τη μέθοδο γενικής χρήσης τοποθετώντας τον πραγματικό τύπο και μέσα στην αγκύλη πριν από το όνομα της μεθόδου.

 demo.genericMethod("Java Programming"); demo.genericMethod(25);

Σημείωση : Μπορούμε να καλέσουμε τη γενική μέθοδο χωρίς να συμπεριλάβουμε την παράμετρο τύπου. Για παράδειγμα,

 demo.genericsMethod("Java Programming");

Σε αυτήν την περίπτωση, ο μεταγλωττιστής μπορεί να ταιριάξει με την παράμετρο τύπου με βάση την τιμή που μεταβιβάστηκε στη μέθοδο.

Οριοθετημένοι τύποι

Γενικά, η παράμετρος τύπου μπορεί να δεχτεί οποιονδήποτε τύπο δεδομένων (εκτός από πρωτόγονους τύπους).

Ωστόσο, εάν θέλουμε να χρησιμοποιήσουμε γενικά για ορισμένους συγκεκριμένους τύπους (όπως αποδοχή δεδομένων αριθμών αριθμών) μόνο, τότε μπορούμε να χρησιμοποιήσουμε οριοθετημένους τύπους.

Στην περίπτωση δεσμευμένων τύπων, χρησιμοποιούμε τη extendsλέξη-κλειδί. Για παράδειγμα,

 

Αυτό σημαίνει ότι το T μπορεί να δεχτεί μόνο δεδομένα που είναι υποτύποι του A.

Παράδειγμα: Οριοθετημένοι τύποι

 class GenericsClass ( public void display() ( System.out.println("This is a bounded type generics class."); ) ) class Main ( public static void main(String() args) ( // create an object of GenericsClass GenericsClass obj = new GenericsClass(); ) )

Στο παραπάνω παράδειγμα, δημιουργήσαμε μια τάξη με το όνομα GenericsClass. Παρατηρήστε την έκφραση, παρατηρήστε την έκφραση

  

Εδώ, το GenericsClass δημιουργείται με οριοθετημένο τύπο. Αυτό το μέσο GenericsClass μπορεί να λειτουργήσει μόνο με τους τύπους δεδομένων που είναι τα παιδιά της Number( Integer, Double, και ούτω καθεξής).

Ωστόσο, έχουμε δημιουργήσει ένα αντικείμενο της κλάσης γενικών με String. Σε αυτήν την περίπτωση, θα λάβουμε το ακόλουθο σφάλμα.

GenericsClass obj = νέο GenericsClass (); λόγος: η μεταβλητή συμπερασμάτων T έχει ασυμβίβαστους περιορισμούς ισότητας ορίων: Συμβολοσειρά κάτω όρια: Αριθμός όπου το T είναι μια μεταβλητή τύπου: T επεκτείνει τον αριθμό που δηλώνεται στην κλάση GenericsClass

Πλεονεκτήματα της Java Generics

1. Επαναχρησιμοποίηση κώδικα

Με τη βοήθεια των γενικών στη Java, μπορούμε να γράψουμε κώδικα που θα λειτουργεί με διαφορετικούς τύπους δεδομένων. Για παράδειγμα,

 public void genericsMethod(T data) (… )

Εδώ, δημιουργήσαμε μια γενική μέθοδο. Αυτή η ίδια μέθοδος μπορεί να χρησιμοποιηθεί για την εκτέλεση λειτουργιών σε ακέραια δεδομένα, δεδομένα συμβολοσειράς και ούτω καθεξής.

2. Έλεγχος τύπου χρόνου μεταγλώττισης

Η παράμετρος τύπου των γενικών παρέχει πληροφορίες σχετικά με τον τύπο δεδομένων που χρησιμοποιούνται στον γενικό κώδικα. Για παράδειγμα,

 // using Generics GenericsClass list = new GenericsClass();

Εδώ, γνωρίζουμε ότι το GenericsClass λειτουργεί Integerμόνο με δεδομένα.

Τώρα, εάν προσπαθήσουμε να μεταφέρουμε δεδομένα εκτός του Integer σε αυτήν την τάξη, το πρόγραμμα θα δημιουργήσει σφάλμα κατά τη στιγμή της μεταγλώττισης.

3. Χρησιμοποιείται με Συλλογές

Το πλαίσιο συλλογών χρησιμοποιεί την έννοια των γενικών στο Java. Για παράδειγμα,

 // creating a string type ArrayList ArrayList list1 = new ArrayList(); // creating a integer type ArrayList ArrayList list2 = new ArrayList();

Στο παραπάνω παράδειγμα, χρησιμοποιήσαμε την ίδια τάξη ArrayList για να εργαστούμε με διαφορετικούς τύπους δεδομένων.

Παρόμοια με ArrayListάλλες συλλογές ( LinkedList, Queue, Maps, και ούτω καθεξής) είναι επίσης γενική σε Java.

ενδιαφέροντα άρθρα...