Java Reflection API: Vše, co potřebujete vědět



Tento článek vám představí rozhraní Java Reflection API a také pomůže, jak funguje Reflection v Javě a co přesně je s demonstrací

Odraz je proces zkoumání nebo úpravy chování třídy za běhu za běhu . Java Reflection API se používá k manipulaci s třídou a jejími členy, které zahrnují pole, metody, konstruktor atd. za běhu. V tomto článku bychom podrobně porozuměli rozhraní Java Reflection API.

Tento článek se zaměří na následující ukazatele:





Pojďme tedy začít s těmito ukazateli v tomto článku o rozhraní Java Reflection API

Kde se používá rozhraní Java Reflection API?

Reflection API se používá hlavně v:



  • IDE (Integrated Development Environment), např. Eclipse, MyEclipse, NetBeans atd.
  • Debugger
  • Testovací nástroje atd.

Co je tedy balíček Class in Java lang reflect?

Třída v balíčku java.lang.reflect?

Následuje seznam různých tříd Java v java.lang.package k implementaci reflexe-

  • Pole : Tato třída se používá ke shromažďování deklarativních informací, jako je datový typ, modifikátor přístupu, název a hodnota proměnné.
  • Metoda : Tato třída se používá ke shromažďování deklarativních informací, jako je modifikátor přístupu, návratový typ, název, typy parametrů a typ výjimky metody.
  • Stavitel : Tato třída se používá ke shromažďování deklarativních informací, jako jsou modifikátory přístupu, typy názvů a parametrů konstruktoru.
  • Upravit : Tato třída se používá ke shromažďování informací o konkrétním modifikátoru přístupu.

Ne, pojďme se podívat na metody Java Reflection API,



Metody používané v java.lang.Class

Metoda

Popis

public String getName ()

vrátí název třídy

public static Class forName (String className) hodí ClassNotFoundException

načte třídu a vrátí odkaz na třídu třídy.

public Object newInstance () vyvolá InstantiationException, IllegalAccessException

vytvoří novou instanci.

public boolean isInterface ()

zkontroluje, zda se jedná o rozhraní.

public boolean isArray ()

zkontroluje, zda je to pole.

public boolean isPrimitive ()

zkontroluje, zda je primitivní.

veřejná třída getSuperclass ()

vrací odkaz na třídu nadtřídy.

public Field [] getDeclaredFields () vyvolá SecurityException

vrací celkový počet polí této třídy.

public Method [] getDeclaredMethods () vyvolá SecurityException

vrací celkový počet metod této třídy.

public Constructor [] getDeclaredConstructors () vyvolá SecurityException

vrací celkový počet konstruktorů této třídy.

veřejná metoda getDeclaredMethod (název řetězce, třída [] parametrTypes) vyvolá NoSuchMethodException, SecurityException

vrací instanci třídy metody.

Pojďme s článkem,

Jak získat objekt třídy Class?

Existují 3 způsoby, jak získat instanci třídy Class. Jsou to následující:

  • metoda forName () třídy Class
  • getClass () metoda třídy Object
  • syntaxe .class

metoda forName () třídy Class

  • slouží k dynamickému načtení třídy.
  • vrací instanci třídy Class.
  • Mělo by se použít, pokud znáte plně kvalifikovaný název třídy. Toto nelze použít pro primitivní typy.

Podívejme se na jednoduchý příklad metody forName ().

třída Simple {} test třídy {public static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}

Výstup:

Jednoduchý

Reflexe Java: Metoda API getClass () třídy Object

Vrátí instanci třídy Class. Mělo by se použít, pokud znáte typ. Kromě toho jej lze použít s primitivními látkami.

třída Jednoduchá {} třída 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ýstup:

Jednoduchý

Syntaxe .class

Pokud je typ k dispozici, ale neexistuje žádná instance, je možné získat třídu připojením „.class“ k názvu typu. Lze jej použít také pro primitivní datový typ.

třída 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ýstup:

booleovský

Test

java nové datum z řetězce

Nyní pojďme pokračovat v tomto článku Java Reflection API

Výhody a nevýhody používání rozhraní Java Reflection API

Výhody používání rozhraní Java Reflection API

  • Funkce rozšiřitelnosti: Aplikace může využívat externí, uživatelem definované třídy vytvořením instancí objektů rozšiřitelnosti pomocí jejich plně kvalifikovaných jmen.
  • Nástroje pro ladění a testování : Debuggery používají vlastnost reflexe k prozkoumání soukromých členů ve třídách.

Nevýhody používání rozhraní Java Reflection API

  • Režijní výkon: Reflexní operace mají pomalejší výkon než jejich nereflexní protějšky a je třeba se jim vyhnout v částech kódu, které se v aplikacích citlivých na výkon často nazývají.
  • Expozice interních: Reflexní kód porušuje abstrakce, a proto může s upgradem platformy změnit chování.

Tak jsme dospěli ke konci tohoto článku o „Java Reflection API“. Pokud se chcete dozvědět více,podívejte se na Edureka, důvěryhodná online vzdělávací společnost. Školicí a certifikační kurz Edureka Java J2EE a SOA je navržen tak, aby vás vyškolil jak pro základní, tak pro pokročilé koncepty Java, spolu s různými rámci Java, jako je Hibernate & Spring.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto článku a my se vám ozveme co nejdříve.