Αντανάκλαση είναι ένα διαδικασία εξέτασης ή τροποποίησης της συμπεριφοράς του χρόνου εκτέλεσης μιας τάξης στο χρόνο εκτέλεσης . API αντανάκλασης Java χρησιμοποιείται για τον χειρισμό της τάξης και των μελών της που περιλαμβάνουν πεδία, μεθόδους, κατασκευαστές κ.λπ. κατά το χρόνο εκτέλεσης. Σε αυτό το άρθρο θα κατανοήσουμε λεπτομερώς το Java Reflection API.
Αυτό το άρθρο θα επικεντρωθεί στους ακόλουθους δείκτες:
- Πού χρησιμοποιήθηκε το Java Reflection API;
- Τάξη στο πακέτο java.lang.reflect
- Μέθοδοι που χρησιμοποιούνται στο java.lang.Class
- Πώς να αποκτήσετε το αντικείμενο της τάξης τάξης;
- Πλεονεκτήματα και μειονεκτήματα της χρήσης Java Reflection API
Ας ξεκινήσουμε λοιπόν με αυτούς τους δείκτες σε αυτό το άρθρο σχετικά με το Java Reflection API
δοκιμή cross browser στο σελήνιο
Πού χρησιμοποιείται το Java Reflection API;
Το API Reflection χρησιμοποιείται κυρίως σε:
- IDE (Ολοκληρωμένο Περιβάλλον Ανάπτυξης) π.χ. Eclipse, MyEclipse, NetBeans κ.λπ.
- Εντοπισμός σφαλμάτων
- Εργαλεία δοκιμής κ.λπ.
Τι είναι λοιπόν το Class in Java lang reflective package;
Τάξη στο πακέτο java.lang.reflect;
Ακολουθεί μια λίστα με διάφορες κατηγορίες Java στο java.lang.package για εφαρμογή
- Πεδίο : Αυτή η τάξη χρησιμοποιείται για τη συλλογή δηλωτικών πληροφοριών όπως τύπος δεδομένων, τροποποιητής πρόσβασης, όνομα και τιμή μιας μεταβλητής.
- Μέθοδος : Αυτή η τάξη χρησιμοποιείται για τη συλλογή δηλωτικών πληροφοριών, όπως τροποποιητής πρόσβασης, τύπος επιστροφής, όνομα, τύποι παραμέτρων και τύπος εξαίρεσης μιας μεθόδου.
- Οικοδόμος : Αυτή η τάξη χρησιμοποιείται για τη συλλογή δηλωτικών πληροφοριών, όπως τροποποιητής πρόσβασης, όνομα και τύποι παραμέτρων ενός κατασκευαστή.
- Επεξεργασία : Αυτή η τάξη χρησιμοποιείται για τη συλλογή πληροφοριών σχετικά με έναν συγκεκριμένο τροποποιητή πρόσβασης.
Όχι, ας ρίξουμε μια ματιά στις μεθόδους Java Reflection API,
Μέθοδοι που χρησιμοποιούνται στο java.lang.Class
Μέθοδος | Περιγραφή |
δημόσια συμβολοσειρά getName () | επιστρέφει το όνομα της τάξης |
δημόσιο στατικό Class forName (String className) ρίχνει ClassNotFoundException | φορτώνει την τάξη και επιστρέφει την αναφορά της κλάσης τάξης. |
public Object newInstance () ρίχνει InstantiationException, IllegalAccessException | δημιουργεί νέα παρουσία. |
δημόσιο boolean isInface () | ελέγχει αν είναι διεπαφή. |
δημόσια boolean isArray () | ελέγχει εάν είναι πίνακας. |
δημόσια boolean isPrimitive () | ελέγχει εάν είναι πρωτόγονη. |
δημόσια τάξη getSuperclass () | επιστρέφει την αναφορά κλάσης superclass. |
δημόσιο πεδίο [] getDeclaredFields () ρίχνει SecurityException | επιστρέφει τον συνολικό αριθμό πεδίων αυτής της τάξης. |
δημόσια μέθοδος [] getDeclaredMethods () ρίχνει SecurityException | επιστρέφει τον συνολικό αριθμό μεθόδων αυτής της τάξης. |
δημόσιος κατασκευαστής [] getDeclaredConstructors () ρίχνει SecurityException | επιστρέφει τον συνολικό αριθμό κατασκευαστών αυτής της κλάσης. πώς να σταματήσετε ένα πρόγραμμα java σε κώδικα |
δημόσια μέθοδο getDeclaredMethod (Όνομα συμβολοσειράς, ClassT] τύποι παραμέτρων) ρίχνει NoSuchMethodException, SecurityException | επιστρέφει την παρουσία κλάσης μεθόδου. |
Πώς να αποκτήσετε το αντικείμενο της τάξης τάξης;
Υπάρχουν 3 τρόποι για να λάβετε την παρουσία της τάξης τάξης. Έχουν ως εξής:
- forName () μέθοδος κλάσης κλάσης
- getClass () μέθοδος της κλάσης αντικειμένων
- η σύνταξη .class
forName () μέθοδος κλάσης κλάσης
- χρησιμοποιείται για τη δυναμική φόρτωση της κλάσης.
- επιστρέφει την παρουσία της κλάσης Class.
- Θα πρέπει να χρησιμοποιείται εάν γνωρίζετε το πλήρως αναγνωρισμένο όνομα της τάξης. Αυτό δεν μπορεί να χρησιμοποιηθεί για πρωτόγονους τύπους.
Ας δούμε το απλό παράδειγμα της μεθόδου forName ().
class Simple {} class Test {public static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}
Παραγωγή:
Απλός
Java Reflection: API getClass () μέθοδος της κλάσης αντικειμένων
Επιστρέφει την παρουσία της κλάσης Class. Θα πρέπει να χρησιμοποιείται εάν γνωρίζετε τον τύπο. Επιπλέον, μπορεί να χρησιμοποιηθεί με πρωτόγονα.
class Simple {} class Test {void printName (Object obj) {Class c = obj.getClass () System.out.println (c.getName ())} δημόσιος στατικός κενός κενός (String args []) {Simple s = new Απλή () Δοκιμή t = νέα δοκιμή () t.printName (s)}}
Παραγωγή:
Απλός
Η σύνταξη .class
Εάν ένας τύπος είναι διαθέσιμος αλλά δεν υπάρχει περίπτωση, τότε είναι δυνατή η απόκτηση κλάσης προσαρτώντας το '.class' στο όνομα του τύπου. Μπορεί επίσης να χρησιμοποιηθεί και για πρωτόγονους τύπους δεδομένων.
class Test {public static void main (String args []) {Class c = boolean.class System.out.println (c.getName ()) Class c2 = Test.class System.out.println (c2.getName ()) }}
Παραγωγή:
boolean
Δοκιμή
Τώρα ας συνεχίσουμε με αυτό το άρθρο του Java Reflection API
Πλεονεκτήματα και μειονεκτήματα της χρήσης Java Reflection API
Πλεονεκτήματα της χρήσης Java Reflection API
- Χαρακτηριστικά επεκτασιμότητας: Μια εφαρμογή μπορεί να κάνει χρήση εξωτερικών, καθορισμένων από το χρήστη κλάσεων δημιουργώντας παρουσίες αντικειμένων επεκτασιμότητας χρησιμοποιώντας τα πλήρως αναγνωρισμένα ονόματά τους.
- Εργαλεία εντοπισμού σφαλμάτων και δοκιμών : Οι εντοπιστές σφαλμάτων χρησιμοποιούν την ιδιότητα προβληματισμού για να εξετάσουν τα ιδιωτικά μέλη σε τάξεις.
Μειονεκτήματα της χρήσης Java Reflection API
- Απόδοση απόδοσης: Οι ανακλαστικές λειτουργίες έχουν χαμηλότερη απόδοση από τις αντίστοιχες μη αντανακλαστικές τους και θα πρέπει να αποφεύγονται σε τμήματα του κώδικα που καλούνται συχνά σε εφαρμογές ευαίσθητες στην απόδοση.
- Έκθεση εσωτερικών: Ο ανακλαστικός κώδικας διακόπτει τις αφαιρέσεις και επομένως μπορεί να αλλάξει συμπεριφορά με τις αναβαθμίσεις της πλατφόρμας.
Έτσι, έχουμε φτάσει στο τέλος αυτού του άρθρου σχετικά με το «Java Reflection API». Αν θέλετε να μάθετε περισσότερα,δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία μάθησης. Το μάθημα εκπαίδευσης και πιστοποίησης Java J2EE και SOA της Edureka έχει σχεδιαστεί για να σας εκπαιδεύσει τόσο για βασικές όσο και για προχωρημένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring
Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του άρθρου και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.