Betrachtung ist ein Prozess zum Untersuchen oder Ändern des Laufzeitverhaltens einer Klasse zur Laufzeit . Java Reflection API wird verwendet, um die Klasse und ihre Mitglieder zu manipulieren, die zur Laufzeit Felder, Methoden, Konstruktoren usw. enthalten. In diesem Artikel werden wir die Java Reflection API im Detail verstehen.
Dieser Artikel konzentriert sich auf folgende Hinweise:
- Wo wird die Java Reflection API verwendet?
- Klasse im Paket java.lang.reflect
- In java.lang.Class verwendete Methoden
- Wie bekomme ich das Objekt der Klassenklasse?
- Vor- und Nachteile der Verwendung der Java Reflection API
Beginnen wir also mit diesen Zeigern in diesem Artikel über die Java Reflection API
Wo wird die Java Reflection API verwendet?
Die Reflection-API wird hauptsächlich verwendet in:
- IDE (Integrated Development Environment), z. Eclipse, MyEclipse, NetBeans usw.
- Debugger
- Testwerkzeuge etc.
Was ist Class in Java Lang Reflect Package?
Klasse im java.lang.reflect-Paket?
Im Folgenden finden Sie eine Liste verschiedener Java-Klassen in java.lang.package, um Reflection- zu implementieren.
- Feld : Diese Klasse wird verwendet, um deklarative Informationen wie Datentyp, Zugriffsmodifikator, Name und Wert einer Variablen zu erfassen.
- Methode : Diese Klasse wird verwendet, um deklarative Informationen wie Zugriffsmodifikator, Rückgabetyp, Name, Parametertyp und Ausnahmetyp einer Methode zu erfassen.
- Baumeister : Diese Klasse wird verwendet, um deklarative Informationen wie Zugriffsmodifikator, Name und Parametertypen eines Konstruktors zu erfassen.
- Bearbeiten : Diese Klasse wird verwendet, um Informationen zu einem bestimmten Zugriffsmodifikator zu sammeln.
Nein, lassen Sie uns einen Blick auf die Java Reflection API-Methoden werfen.
In java.lang.Class verwendete Methoden
Methode | Beschreibung |
public String getName () | Gibt den Klassennamen zurück |
public static Class forName (String className) löst ClassNotFoundException aus | Lädt die Klasse und gibt die Referenz der Klassenklasse zurück. |
public Object newInstance () löst InstantiationException, IllegalAccessException aus | erstellt eine neue Instanz. |
public boolean isInterface () | prüft, ob es sich um eine Schnittstelle handelt. |
public boolean isArray () | prüft, ob es sich um ein Array handelt. |
public boolean isPrimitive () | prüft, ob es primitiv ist. |
öffentliche Klasse getSuperclass () | Gibt die Klassenreferenz der Oberklasse zurück. |
public Field [] getDeclaredFields () löst eine SecurityException aus | Gibt die Gesamtzahl der Felder dieser Klasse zurück. |
public Method [] getDeclaredMethods () löst eine SecurityException aus | Gibt die Gesamtzahl der Methoden dieser Klasse zurück. |
public Constructor [] getDeclaredConstructors () löst eine SecurityException aus | Gibt die Gesamtzahl der Konstruktoren dieser Klasse zurück. |
public Method getDeclaredMethod (String name, Class [] parameterTypes) löst NoSuchMethodException, SecurityException aus | Gibt die Methodenklasseninstanz zurück. |
Lassen Sie uns mit dem Artikel fortfahren,
Wie bekomme ich das Objekt der Klassenklasse?
Es gibt drei Möglichkeiten, um die Instanz der Klassenklasse abzurufen. Sie sind wie folgt:
- forName () -Methode der Klassenklasse
- getClass () -Methode der Object-Klasse
- die .class-Syntax
forName () -Methode der Klassenklasse
- wird verwendet, um die Klasse dynamisch zu laden.
- Gibt die Instanz der Klassenklasse zurück.
- Es sollte verwendet werden, wenn Sie den vollständig qualifizierten Namen der Klasse kennen. Dies kann nicht für primitive Typen verwendet werden.
Sehen wir uns das einfache Beispiel der forName () -Methode an.
class Simple {} class Test {public statisch void main (String args []) {Klasse c = Class.forName ('Simple') System.out.println (c.getName ())}}
Ausgabe:
Einfach
Java Reflection: API-Methode getClass () der Object-Klasse
Es gibt die Instanz der Klassenklasse zurück. Es sollte verwendet werden, wenn Sie den Typ kennen. Darüber hinaus kann es mit Grundelementen verwendet werden.
Klasse Simple {} class Test {void printName (Objekt obj) {Klasse c = obj.getClass () System.out.println (c.getName ())} public static void main (String args []) {Simple s = new Einfacher () Test t = neuer Test () t.printName (s)}}
Ausgabe:
Einfach
Die .class-Syntax
Wenn ein Typ verfügbar ist, aber keine Instanz vorhanden ist, kann eine Klasse abgerufen werden, indem '.class' an den Namen des Typs angehängt wird. Er kann auch für primitive Datentypen verwendet werden.
Klasse Test {public static void main (String args []) {Klasse c = boolean.class System.out.println (c.getName ()) Klasse c2 = Test.class System.out.println (c2.getName ()) }}
Ausgabe:
Boolescher Wert
Prüfung
Fahren wir nun mit diesem Java Reflection API-Artikel fort
Vor- und Nachteile der Verwendung der Java Reflection API
Vorteile der Verwendung der Java Reflection API
- Erweiterungsfunktionen: Eine Anwendung kann externe, benutzerdefinierte Klassen verwenden, indem Instanzen von Erweiterungsobjekten unter Verwendung ihrer vollständig qualifizierten Namen erstellt werden.
- Debugging- und Test-Tools : Debugger verwenden die Eigenschaft der Reflexion, um private Mitglieder in Klassen zu untersuchen.
Nachteile der Verwendung der Java Reflection API
- Leistungsaufwand: Reflektierende Operationen haben eine langsamere Leistung als ihre nicht reflektierenden Gegenstücke und sollten in Codeabschnitten vermieden werden, die in leistungsempfindlichen Anwendungen häufig aufgerufen werden.
- Belichtung von Interna: Reflektierender Code unterbricht Abstraktionen und kann daher das Verhalten bei Upgrades der Plattform ändern.
Damit sind wir am Ende dieses Artikels über die Java Reflection API angelangt. Wenn Sie mehr erfahren möchten,Besuche die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen. Der Java J2EE- und SOA-Schulungs- und Zertifizierungskurs von Edureka wurde entwickelt, um Sie für Kern- und fortgeschrittene Java-Konzepte sowie für verschiedene Java-Frameworks wie Hibernate & Spring zu schulen.
Java, wie man tostring verwendet
Hast du eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich dieses Artikels und wir werden uns so schnell wie möglich bei Ihnen melden.