Σκεφτείτε ένα παράδειγμα όπου πρέπει να δημιουργήσετε μια λίστα με τα ζωντανά πράγματα σε μια τοποθεσία. Δεν έχει σημασία αν είναι άνθρωπος, ζώο ή φυτό. Το μόνο που έχει σημασία είναι ένα ζωντανό πράγμα. Σε αυτήν την περίπτωση, θα τα ομαδοποιήσετε όλα ως 'Ζωντανά πράγματα' και όχι να τα κατηγοριοποιήσετε. Ομοίως, όταν πρέπει να αποθηκεύσετε ορισμένα δεδομένα, αυτό που έχει σημασία για εσάς είναι το περιεχόμενο και όχι ο τύπος δεδομένων και εκεί είναι που χρησιμοποιείτε το Generics. Generics σε είναι μια γλωσσική δυνατότητα που επιτρέπει τη χρήση γενικών τύπων και μεθόδων.
Ακολουθεί η λίστα των θεμάτων που θα καλύψω σε αυτό το άρθρο:
def __init__ python
- Τι είναι το Generics στην Java;
- Γιατί Java Generics;
- Τύποι Java Generics
- Πλεονεκτήματα των Generics στην Java
Τι είναι το Generics στην Java;
Generics είναι ένας όρος που υποδηλώνει ένα σύνολο χαρακτηριστικών γλωσσών που σχετίζονται με τον ορισμό και τη χρήση γενικών τύπων και μεθόδων. Οι γενικές μέθοδοι Java διαφέρουν από τους συνήθεις τύπους δεδομένων και μεθόδους. Πριν από το Generics, χρησιμοποιήσαμε το για να αποθηκεύσετε οποιοδήποτε είδος αντικειμένων, δηλ. μη γενική . Τώρα, η Generics αναγκάζει το προγραμματιστής για να αποθηκεύσετε έναν συγκεκριμένο τύπο αντικειμένων.
Τώρα που γνωρίζετε τι είναι το Generics στην Java, ας προχωρήσουμε περαιτέρω και να καταλάβουμε γιατί χρειάζεστε το Java Generics.
Γιατί Java Generics;
Αν κοιτάξετε το τάξεις, τότε θα παρατηρήσετε ότι οι περισσότερες κλάσεις λαμβάνουν παράμετρο / όρισμα τύπου Object. Βασικά, σε αυτήν τη φόρμα, μπορούν να πάρουν οποιονδήποτε τύπο Java ως όρισμα και να επιστρέψουν το ίδιο αντικείμενο ή όρισμα. Είναι ουσιαστικά ετερογενής δηλαδή όχι παρόμοιου τύπου.
Μερικές φορές στην εφαρμογή Java, ο τύπος δεδομένων της εισόδου δεν είναι σταθερός. Η είσοδος μπορεί να είναι μια ακέραιος αριθμός , προς το φλοτέρ ή . Για να αντιστοιχίσετε την είσοδο στο του σωστού τύπου δεδομένων, έπρεπε να διεξαχθούν προηγούμενοι έλεγχοι. Στην παραδοσιακή προσέγγιση, μετά τη λήψη της εισόδου, ο τύπος δεδομένων της εισαγωγής ελέγχθηκε και στη συνέχεια ανατέθηκε στη μεταβλητή του σωστού τύπου δεδομένων. Όταν χρησιμοποιήθηκε αυτή η λογική, το μήκος του κώδικα και ο χρόνος εκτέλεσης αυξήθηκαν. Για να το αποφύγετε αυτό, Εισήχθη το Generics . Όταν χρησιμοποιείτε το Generics, οι παράμετροι στον κώδικα ελέγχονται αυτόματα στο χρόνο μεταγλώττισης και ορίζει τον τύπο δεδομένων από προεπιλογή. Αυτό είναι όπου χρειάζεστε την έννοια των γενόσημων στο Java.
Τώρα που έχετε αποκτήσει κάποιες πληροφορίες σχετικά με το Generics, ας προχωρήσουμε και ρίξτε μια ματιά στους διάφορους τρόπους πώςΤα γενικά μπορούν να εφαρμοστούν στον πηγαίο κώδικα.
Τύποι Java Generics
Υπάρχουν 4 διαφορετικοί τρόποι με τους οποίους τα Generics μπορούν να εφαρμοστούν στην Java και έχουν ως εξής:
- Κατηγορία γενικού τύπου
- Γενική διεπαφή
- Γενική μέθοδος
- Γενικός Κατασκευαστής
Τώρα ας καταλάβουμε πώς μπορούν να εφαρμοστούν τα γενόσημα σε κλάση τύπων σε βάθος.
1. Κατηγορία γενικού τύπου
Μια τάξη λέγεται ότι είναι γενική εάν δηλώνει μία ή περισσότερες μεταβλητές τύπου. Αυτοί οι μεταβλητοί τύποι είναι γνωστοί ως παράμετροι τύπου του . Ας το καταλάβουμε με τη βοήθεια ενός παραδείγματος. Στο παρακάτω παράδειγμα, θα δημιουργήσω μια τάξη με μία ιδιότητα Χ και ο τύπος της ιδιότητας είναι ένα αντικείμενο.
class Genericclass {private Object x public void set (Object x) {this.x = x} public Object get () {επιστροφή x}}
Εδώ, μόλις ξεκινήσετε την τάξη με έναν συγκεκριμένο τύπο, η τάξη θα πρέπει να χρησιμοποιείται μόνο με τον συγκεκριμένο τύπο. Π.χ. Εάν θέλετε μια παρουσία της κλάσης να διατηρεί την τιμή Χ του τύπου « Σειρά «, Τότε ο προγραμματιστής πρέπει να ορίσει και να πάρει το μόνο τύπος. Εφόσον έχω δηλώσει τον τύπο ιδιοκτησίας στο Object, δεν υπάρχει τρόπος να επιβληθεί αυτός ο περιορισμός. Ένας προγραμματιστής μπορεί να ορίσει οποιοδήποτε αντικείμενο και μπορεί να αναμένει οποιονδήποτε τύπο τιμής επιστροφής από λήψη μεθόδου αφού όλοι οι τύποι Java είναι υποτύποι τάξη.
Για να επιβάλουμε αυτόν τον τύπο περιορισμού, μπορούμε να χρησιμοποιήσουμε γενικά όπως παρακάτω:
class Genericclass {// T σημαίνει 'Type' private T x public void set (T x) {this.x = x} public T get () {return x}}
Τώρα μπορείτε να είστε βέβαιοι ότι το μάθημα δεν θα χρησιμοποιηθεί σωστά με λάθος τύπους. Ένα απλό παράδειγμα' Γενική κλάση Μοιάζει όπως φαίνεται παρακάτω:
Genericclass instance = new Genericclass () instance.set ('Edureka') instance.set (10) // Αυτό θα αυξήσει το σφάλμα χρόνου μεταγλώττισης
Έτσι λειτουργεί. ΑυτόΗ αναλογία ισχύει και για τη διεπαφή. Ας δούμε γρήγορα ένα παράδειγμα για να κατανοήσουμε, πώς μπορούν να χρησιμοποιηθούν πληροφορίες τύπου γενικής χρήσης σε διεπαφές στην Java.
2. Γενική διεπαφή
Ενα αναφέρεται στους αφηρημένους τύπους δεδομένων. Επιτρέπουν να χειραγωγούνται ανεξάρτητα από τις λεπτομέρειες της εκπροσώπησής τους. Επίσης, σχηματίζουν μια ιεραρχία στο Γλώσσες. Ας καταλάβουμε πώς μπορεί να εφαρμοστεί γενικός τύπος σε διεπαφές στην Java.
// Γενική διεπαφή ορισμού διεπαφής GenericInterface {T2 PerformExecution (T1 x) T1 ReverseExecution (T2 x)} // Μια κλάση που εφαρμόζει γενική διεπαφή κλάσης Genericclass εφαρμόζει GenericInterface {public Integer PerformExecution (String x) {// εκτελεστικός κώδικας} δημόσια String ReverseExecution ( Ακέραιος x) {// κωδικός εκτέλεσης}}
Ελπίζω να καταφέρατε να καταλάβετε πώς μπορούν να εφαρμοστούν τα Generics σε κλάση τύπων και διεπαφές. Τώρα ας εμβαθύνουμε σε αυτό το άρθρο και να κατανοήσουμε πώς είναι χρήσιμο για μεθόδους και κατασκευαστές.
3. Γενικές μέθοδοι
Οι γενικές μέθοδοι είναι πολύ παρόμοιες με τις γενικές τάξεις. Διαφέρουν μεταξύ τους σε μία μόνο πτυχή που το Το πεδίο εφαρμογής ή ο τύπος πληροφοριών βρίσκονται μόνο στη μέθοδο. Οι γενικές μέθοδοι εισάγουν τις δικές τους παραμέτρους τύπου.
Ας το καταλάβουμε με ένα παράδειγμα. Ακολουθεί ένα παράδειγμα μιας γενικής μεθόδου που μπορεί να χρησιμοποιηθεί για την εύρεση όλων των εμφανίσεων παραμέτρων τύπου σε μια λίστα μεταβλητών.
δημόσιο στατικό int countAllOccurrences (λίστα T [], στοιχείο T) {int count = 0 if (element == null) {for (T listElement: list) if (listElement == null) count ++} other {for (T listElement: list ) εάν (element.equals (listElement)) μετρήστε ++} επιστροφή μετρήσεων}
Εάν περάσετε μια λίστα με Συμβολοσειρά για αναζήτηση σε αυτήν τη μέθοδο, θα λειτουργήσει μια χαρά. Αλλά αν προσπαθήσετε να βρείτε έναν αριθμό στη λίστα των συμβολοσειρών, θα δώσει σφάλμα χρόνου μεταγλώττισης.
Αυτή η αναλογία είναι παρόμοια και με τον κατασκευαστή. Ας πάρουμε ένα παράδειγμα για τον γενικό κατασκευαστή και να κατανοήσουμε πώς λειτουργεί.
4. Γενικός Κατασκευαστής
Για τον οικοδόμο είναι ένα μπλοκ κώδικα που αρχικοποιεί το νέο αντικείμενο. ΕΝΑ οικοδόμος μοιάζει με μια μέθοδο εμφάνισης στο J ava αλλά δεν είναι μέθοδος καθώς δεν έχει τύπο επιστροφής. Ο κατασκευαστής έχει το ίδιο όνομα με την τάξη και μοιάζει με αυτό στο J ava κώδικας. Ας πάρουμε ένα παράδειγμα και καταλάβουμε πώς λειτουργεί.
class Dimension {private T length private T width private T height // Γενική κατασκευαστική δημόσια διάσταση (μήκος T, πλάτος T, ύψος T) {super () this.length = length this.width = width this.height = height}}
Στο παραπάνω παράδειγμα, ο κατασκευαστής της κλάσης ιδιοτήτων έχει τις πληροφορίες τύπου. Έτσι, μπορείτε να έχετε μια παρουσία διάστασης με όλα τα χαρακτηριστικά ενός μόνο τύπου. Έτσι μπορείτε να χρησιμοποιήσετε κατασκευαστές τύπου γενικής χρήσης. Ελπίζω να καταλάβατε τους τύπους γενόσημων φαρμάκων στην Java.
Τώρα ας προχωρήσουμε περαιτέρω και ας δούμε τα πλεονεκτήματα του Generics στην Java.
Πλεονεκτήματα των Generics στην Java
1. Επαναχρησιμοποίηση κώδικα
Μπορείτε να συνθέσετε μια στρατηγική ή ένα μάθημα ή ένα μία φορά και χρησιμοποιήστε για οποιοδήποτε τύπο ή με οποιονδήποτε τρόπο χρειάζεστε.
2. Δεν απαιτείται μεμονωμένος τύπος μετάδοσης
Βασικά, ανακτήσατε πληροφορίες από κάθε φορά, πρέπει να το πληκτρολογήσετε. Η τυποποίηση σε κάθε εργασία ανάκτησης είναι μια σημαντική ημικρανία. Για να εξαλειφθεί αυτή η προσέγγιση, εισήχθησαν γενόσημα φάρμακα.
3. Εφαρμογή ενός μη γενικού αλγορίθμου
Μπορεί να υπολογίσει τους αλγόριθμους που λειτουργούν σε διάφορα είδη αντικειμένων που είναι ασφαλείς για τον τύπο.
Όλα αυτά αφορούσαν τα πλεονεκτήματα της Java Generics. Με αυτό, φτάνουμε στο τέλος αυτού του άρθρου σχετικά με το Generics in Java. Ελπίζω ότι το βρήκατε ενημερωτικό και σας βοήθησε να κατανοήσετε το Java Generics.
Δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Είμαστε εδώ για να σας βοηθήσουμε σε κάθε βήμα του ταξιδιού σας, για να γίνετε εκτός από αυτές τις ερωτήσεις της συνέντευξης java, έχουμε ένα πρόγραμμα σπουδών που έχει σχεδιαστεί για φοιτητές και επαγγελματίες που θέλουν να γίνουν προγραμματιστές Java. Το μάθημα έχει σχεδιαστεί για να σας δώσει μια πρώτη αρχή στον προγραμματισμό Java και να σας εκπαιδεύσει τόσο για τις βασικές όσο και για τις προηγμένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring.
Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του «Generics in Java ' άρθρο και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.