Reflecţie este o proces de examinare sau modificare a comportamentului în timpul de execuție al unei clase la timpul de execuție . API Java Reflection este folosit pentru a manipula clasa și membrii săi care includ câmpuri, metode, constructor etc. în timpul rulării. În acest articol vom înțelege în detaliu API-ul Java Reflection.
Acest articol se va concentra pe următoarele indicații:
- Unde a folosit Java Reflection API?
- Clasa în pachetul java.lang.reflect
- Metode utilizate în java.lang.Class
- Cum se obține obiectul clasei Class?
- Avantajele și dezavantajele utilizării API-ului Java Reflection
Deci, haideți să începem cu aceste indicii în acest articol despre Java Reflection API
Unde este folosit Java Reflection API?
API-ul Reflection este utilizat în principal în:
- IDE (mediu de dezvoltare integrat) de ex. Eclipse, MyEclipse, NetBeans etc.
- Depanator
- Instrumente de testare etc.
Deci, ce este pachetul Class in Java lang reflect?
Clasa în pachetul java.lang.reflect?
Urmează o listă a diferitelor clase Java din java.lang.package pentru a implementa reflecția-
- Camp : Această clasă este utilizată pentru a colecta informații declarative, cum ar fi tipul de date, modificatorul de acces, numele și valoarea unei variabile.
- Metodă : Această clasă este utilizată pentru a colecta informații declarative, cum ar fi modificatorul de acces, tipul de returnare, numele, tipurile de parametri și tipul de excepție al unei metode.
- Constructor : Această clasă este utilizată pentru a colecta informații declarative, cum ar fi modificatorul de acces, numele și tipurile de parametri ai unui constructor.
- Editați | × : Această clasă este utilizată pentru a aduna informații despre un anumit modificator de acces.
Nu, să ne uităm la metodele API Java Reflection,
Metode utilizate în java.lang.Class
Metodă | Descriere |
public String getName () | returnează numele clasei |
public static Class forName (String className) aruncă ClassNotFoundException | încarcă clasa și returnează referința clasei de clasă. |
Obiect public newInstance () aruncă InstantiationException, IllegalAccessException | creează o nouă instanță. cum se setează classpath în Linux |
public boolean isInterface () | verifică dacă este interfață. |
public boolean isArray () cum se creează un set | verifică dacă este matrice. |
public boolean isPrimitive () | verifică dacă este primitiv. |
public Class getSuperclass () | returnează referința clasei superclase. |
public Field [] getDeclaredFields () aruncă SecurityException | returnează numărul total de câmpuri din această clasă. |
public Method [] getDeclaredMethods () aruncă SecurityException | returnează numărul total de metode ale acestei clase. |
public Constructor [] getDeclaredConstructors () aruncă SecurityException | returnează numărul total de constructori din această clasă. |
public Method getDeclaredMethod (String name, Class [] parameterTypes) aruncă NoSuchMethodException, SecurityException | returnează instanța clasei de metodă. |
Să mergem mai departe cu articolul,
Cum se obține obiectul clasei Class?
Există 3 moduri de a obține instanța clasei Class. Acestea sunt după cum urmează:
- forName () metoda clasei Class
- getClass () metoda clasei Object
- sintaxa clasei
forName () metoda clasei Class
- este folosit pentru a încărca clasa dinamic.
- returnează instanța clasei Class.
- Ar trebui să fie utilizat dacă cunoașteți numele complet calificat al clasei. Acest lucru nu poate fi utilizat pentru tipurile primitive.
Să vedem exemplul simplu al metodei forName ().
class Simple {} class Test {public static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}
Ieșire:
Simplu
Java Reflection: Metoda API getClass () a clasei Object
Returnează instanța clasei Class. Ar trebui utilizat dacă știți tipul. Mai mult, poate fi folosit cu primitive.
class Simple {} class Test {void printName (Object obj) {Class c = obj.getClass () System.out.println (c.getName ())} public static void main (String args []) {Simple s = new Simple () Test t = new Test () t.printName (s)}}
Ieșire:
Simplu
pivot și unpivot în sql
Sintaxa .class
Dacă un tip este disponibil, dar nu există nicio instanță, atunci este posibil să se obțină o clasă prin adăugarea „.class” la numele tipului. Poate fi folosit și pentru tipul de date primitiv.
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 ()) }}
Ieșire:
boolean
Test
Acum să continuăm cu acest articol Java Reflection API
Avantajele și dezavantajele utilizării API-ului Java Reflection
Avantajele utilizării API-ului Java Reflection
- Caracteristici de extensibilitate: O aplicație poate face uz de clase externe, definite de utilizator, creând instanțe de obiecte de extensibilitate folosind numele lor complet calificate.
- Instrumente de depanare și testare : Depanatorii folosesc proprietatea reflecției pentru a examina membrii privați în clase.
Dezavantaje ale utilizării API-ului Java Reflection
- Performanță generală: Operațiile reflectorizante au performanțe mai lente decât omologii lor non-reflectorizante și ar trebui evitate în secțiunile de cod care sunt denumite frecvent în aplicațiile sensibile la performanță.
- Expunerea internelor: Codul reflectorizant sparge abstracțiile și, prin urmare, poate schimba comportamentul cu upgrade-urile platformei.
Astfel am ajuns la sfârșitul acestui articol despre „Java Reflection API”. Dacă doriți să aflați mai multe,verificați de Edureka, o companie de învățare online de încredere. Cursul de formare și certificare Java J2EE și SOA Edureka este conceput pentru a vă instrui atât pentru conceptele Java de bază, cât și pentru cele avansate Java, împreună cu diverse cadre Java, cum ar fi Hibernate & Spring.
Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui articol și vă vom răspunde cât mai curând posibil.