Java Reflection API: Všetko, čo potrebujete vedieť



Tento článok vám predstaví rozhranie Java Reflection API a tiež pomôže, ako funguje Reflection v prostredí Java a čo to je, s demonštráciou

Odraz je a proces skúmania alebo úpravy správania triedy za behu za chodu . Rozhranie Java Reflection API sa používa na manipuláciu s triedou a jej členmi, ktoré zahŕňajú polia, metódy, konštruktor atď. za behu modulu. V tomto článku by sme podrobne porozumeli rozhraniu Java Reflection API.

Tento článok sa zameria na nasledujúce ukazovatele:





Začnime teda týmito ukazovateľmi v tomto článku o rozhraní Java Reflection API

Kde sa používa rozhranie Java Reflection API?

Reflection API sa používa hlavne v:



  • IDE (Integrated Development Environment) napr. Eclipse, MyEclipse, NetBeans atď.
  • Debugger
  • Testovacie nástroje atď.

Čo je teda balík Class in Java lang reflect?

Trieda v balíku java.lang.reflect?

Nasleduje zoznam rôznych tried Java v balíku java.lang.package na implementáciu reflexie-

  • Lúka : Táto trieda sa používa na zhromažďovanie deklaratívnych informácií, ako sú dátový typ, modifikátor prístupu, názov a hodnota premennej.
  • Metóda : Táto trieda sa používa na zhromažďovanie deklaratívnych informácií, ako sú modifikátor prístupu, návratový typ, názov, typy parametrov a typ výnimky metódy.
  • Staviteľ : Táto trieda sa používa na zhromažďovanie deklaratívnych informácií, ako sú modifikátory prístupu, názvy a typy parametrov konštruktora.
  • Upraviť : Táto trieda sa používa na zhromažďovanie informácií o konkrétnom modifikátore prístupu.

Nie, pozrime sa na metódy Java Reflection API,



Metódy použité v java.lang.Class

Metóda

Popis

verejný reťazec getName ()

vráti názov triedy

public static Trieda forName (reťazec className) vyvolá ClassNotFoundException

načíta triedu a vráti referenciu triedy Class.

public Object newInstance () vyvolá InstantiationException, IllegalAccessException

vytvorí novú inštanciu.

public boolean isInterface ()

skontroluje, či ide o rozhranie.

public boolean isArray ()

skontroluje, či je to pole.

public boolean jePrimitive ()

skontroluje, či je to primitívne.

verejná trieda getSuperclass ()

vráti odkaz na nadtriedu.

public Field [] getDeclaredFields () vyvolá SecurityException

vráti celkový počet polí tejto triedy.

public Metóda [] getDeclaredMethods () vyvolá SecurityException

vráti celkový počet metód tejto triedy.

public Constructor [] getDeclaredConstructors () vyvolá SecurityException

vráti celkový počet konštruktorov tejto triedy.

verejná metóda getDeclaredMethod (názov reťazca, trieda [] parameterTypes) hodí NoSuchMethodException, SecurityException

vráti inštanciu triedy metódy.

Poďme ďalej s článkom,

Ako získať objekt triedy triedy?

Existujú 3 spôsoby, ako získať inštanciu triedy Class. Sú to tieto:

  • metóda forName () triedy Class
  • metóda getClass () triedy Object
  • syntax .class

metóda forName () triedy Class

  • sa používa na dynamické načítanie triedy.
  • vráti inštanciu triedy Class.
  • Malo by sa použiť, ak poznáte úplný názov triedy. Toto sa nedá použiť pre primitívne typy.

Pozrime sa na jednoduchý príklad metódy forName ().

trieda Simple {} test triedy {public static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}

Výkon:

Jednoduché

Reflexia Java: Metóda API getClass () triedy Object

Vráti inštanciu triedy Class. Malo by sa použiť, ak poznáte typ. Môže sa navyše použiť s primitívmi.

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)}}

Výkon:

Jednoduché

Syntax triedy .class

Ak je typ k dispozícii, ale neexistuje žiadna inštancia, je možné získať triedu pripojením „.class“ k názvu typu. Môže sa použiť aj pre primitívny dátový typ.

trieda 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 ()) }}

Výkon:

boolovský

Test

java nový dátum z reťazca

Teraz pokračujme v tomto článku Java Reflection API

Výhody a nevýhody používania rozhrania Java Reflection API

Výhody používania rozhrania Java Reflection API

  • Funkcie rozšíriteľnosti: Aplikácia môže využívať externé, užívateľom definované triedy vytváraním inštancií objektov rozšíriteľnosti pomocou svojich plne kvalifikovaných názvov.
  • Nástroje na ladenie a testovanie : Debuggery používajú vlastnosť reflexie na skúmanie súkromných členov v triedach.

Nevýhody používania rozhrania Java Reflection API

  • Výkonová réžia: Reflexné operácie majú pomalší výkon ako ich nereflexné náprotivky a je potrebné sa im vyhnúť v častiach kódu, ktoré sa v aplikáciách citlivých na výkon často volajú.
  • Expozícia vnútorných priestorov: Reflexný kód porušuje abstrakcie, a preto môže pri aktualizácii platformy zmeniť správanie.

Dostali sme sa tak na koniec tohto článku o „Java Reflection API“. Ak sa chcete dozvedieť viac,pozrite sa na Edureka, dôveryhodná online vzdelávacia spoločnosť. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je navrhnutý tak, aby vás vyškolil na základné aj pokročilé koncepty Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto článku a my sa vám ozveme čo najskôr.