Java Reflection API: Όλα όσα πρέπει να γνωρίζετε



Αυτό το άρθρο θα σας παρουσιάσει το Java Reflection API και θα σας βοηθήσει επίσης πώς λειτουργεί το Reflection στην Java και τι ακριβώς συμβαίνει με την επίδειξη

Αντανάκλαση είναι ένα διαδικασία εξέτασης ή τροποποίησης της συμπεριφοράς του χρόνου εκτέλεσης μιας τάξης στο χρόνο εκτέλεσης . API αντανάκλασης Java χρησιμοποιείται για τον χειρισμό της τάξης και των μελών της που περιλαμβάνουν πεδία, μεθόδους, κατασκευαστές κ.λπ. κατά το χρόνο εκτέλεσης. Σε αυτό το άρθρο θα κατανοήσουμε λεπτομερώς το 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

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του άρθρου και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.