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:
- Kde se používá rozhraní Java Reflection API?
- Třída v balíčku java.lang.reflect
- Metody používané v java.lang.Class
- Jak získat objekt třídy Class?
- Výhody a nevýhody používání rozhraní Java Reflection API
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. |
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.