Java Reflection API: Alles was Sie wissen müssen



In diesem Artikel werden Sie in die Java Reflection-API eingeführt und erfahren, wie Reflection in Java funktioniert und was genau es mit der Demonstration ist

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:





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.