Visszaverődés egy az osztály futásidejű viselkedésének vizsgálatának vagy módosításának folyamata . Java Reflection API az osztály és tagjainak manipulálására szolgál, amelyek futás közben tartalmaznak mezőket, módszereket, konstruktort stb. Ebben a cikkben részletesen megértjük a Java Reflection API-t.
Ez a cikk a következő mutatókra összpontosít:
- Hol használt Java Reflection API-t?
- Osztály a java.lang.reflect csomagban
- A java.lang.Class alkalmazásában alkalmazott módszerek
- Hogyan lehet megszerezni a Class osztály objektumát?
- A Java Reflection API használatának előnyei és hátrányai
Kezdjük tehát ezeket a mutatókat a Java Reflection API-s cikkünkben
Hol használják a Java Reflection API-t?
A Reflection API-t elsősorban:
- IDE (Integrated Development Environment) pl. Eclipse, MyEclipse, NetBeans stb.
- Hibakereső
- Teszteszközök stb.
Tehát mi a Class in Java lang refl csomag?
Osztály a java.lang.reflect csomagban?
Az alábbiakban felsoroljuk a Java Java osztályok listáját a java.lang.package alkalmazásban a reflexió-
- Terület : Ez az osztály olyan deklaratív információk gyűjtésére szolgál, mint például az adattípus, a hozzáférés-módosító, a változó neve és értéke.
- Módszer : Ezt az osztályt olyan deklaratív információk gyűjtésére használják, mint a hozzáférés módosítója, a visszatérés típusa, a név, a paramétertípusok és a módszer kivétel típusa.
- Építész : Ezt az osztályt olyan deklaratív információk gyűjtésére használják, mint a hozzáférés módosítója, a konstruktor neve és paraméterei.
- Szerkesztés : Ez az osztály egy adott hozzáférés-módosítóval kapcsolatos információk gyűjtésére szolgál.
Ne vessünk egy pillantást a Java Reflection API módszerekre,
A java.lang.Class alkalmazásában alkalmazott módszerek
Módszer | Leírás |
public String getName () | visszaadja az osztály nevét |
public static Class forName (String className) dobja a ClassNotFoundException-t | betölti az osztályt és visszaadja az osztály osztály hivatkozását. |
public Object newInstance () dobja az InstantiationException, az IllegalAccessException elemeket | új példányt hoz létre. |
nyilvános logikai isInterface () | ellenőrzi, hogy interfész-e. |
nyilvános logikai isArray () | ellenőrzi, hogy tömb-e. |
nyilvános logikai érték isPrimitive () | ellenőrzi, hogy primitív-e. |
nyilvános osztály getSuperclass () | a szuperosztály osztály hivatkozását adja vissza. |
public Field [] getDeclaredFields () dobja a SecurityException-t | az osztály mezőinek teljes számát adja eredményül. |
public Method [] getDeclaredMethods () dobja a SecurityException-t | az osztály metódusainak teljes számát adja eredményül. |
public Constructor [] getDeclaredConstructors () dobja a SecurityException-t | ennek az osztálynak a konstruktőreinek teljes számát adja eredményül. |
public metódus getDeclaredMethod (karakterlánc neve, Osztály [] paraméterTípusok) dobja a NoSuchMethodException, SecurityException | a metódus osztály példányát adja vissza. |
Hogyan lehet megszerezni a Class osztály objektumát?
Három módon lehet lekérni a Class osztály példányát. Ezek a következők:
- osztály osztály forName () metódusa
- Az objektum osztály getClass () metódusa
- a .osztály szintaxisa
osztály osztály forName () metódusa
- az osztály dinamikus betöltésére szolgál.
- a Class osztály példányát adja vissza.
- Akkor kell használni, ha ismeri az osztály teljesen minősített nevét. Ez nem használható primitív típusoknál.
Lássuk a forName () metódus egyszerű példáját.
class Simple {} class Test {public static void main (String args []) {class c = Class.forName ('Simple') System.out.println (c.getName ())}}
Kimenet:
Egyszerű
Java Reflection: Az objektum osztály API getClass () metódusa
Visszaadja a Class osztály példányát. Akkor kell használni, ha ismeri a típust. Sőt, primitívekkel is használható.
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 Egyszerű () teszt t = új teszt () t.printNév (ek)}}
Kimenet:
Egyszerű
A .osztály szintaxisa
Ha rendelkezésre áll egy típus, de nincs példány, akkor úgy lehet osztályt megszerezni, hogy a típus nevéhez fűzzük a „.class” szót. Ez primitív adattípushoz is használható.
class Test {public static void main (String args []) {c osztály = logikai osztály osztály.out.println (c.getName ()) c2 osztály = Test.class System.out.println (c2.getName ()) }}
Kimenet:
logikai érték
Teszt
Most folytassuk ezt a Java Reflection API cikket
A Java Reflection API használatának előnyei és hátrányai
A Java Reflection API használatának előnyei
- Bővíthetőség: Egy alkalmazás használhat külső, felhasználó által definiált osztályokat azáltal, hogy a kiterjeszthetőségi objektumok példányait teljesen minősített nevükkel hozza létre.
- Hibakereső és tesztelő eszközök : A hibakeresők a reflexió tulajdonságát használják az osztályok magántagjainak megvizsgálására.
A Java Reflection API használatának hátrányai
- Teljesítmény rezsi: A fényvisszaverő műveletek teljesítménye lassabb, mint a nem tükröző társaiké, ezért ezeket el kell kerülni azokban a kódrészekben, amelyeket a teljesítményérzékeny alkalmazásokban gyakran hívnak.
- Belsők kitettsége: A fényvisszaverő kód megszakítja az absztrakciókat, ezért megváltoztathatja a viselkedést a platform frissítésével.
Így ennek a cikknek a végére értünk a „Java Reflection API” -ról. Ha többet szeretne megtudni,nézd meg a Edureka, egy megbízható online tanulási társaság. Az Edureka Java J2EE és SOA képzési és tanúsítási tanfolyamát arra tervezték, hogy mind az alapvető, mind a fejlett Java koncepciókra kiképezzen különféle Java keretrendszereket, például a Hibernate & Spring.
hogyan ellenőrizhető a palindrom a java-ban
Van egy kérdésünk? Kérjük, említse meg a cikk megjegyzés rovatában, és a lehető leghamarabb kapcsolatba lépünk Önnel.