Heim > Java > javaLernprogramm > Reflexion in JAVA

Reflexion in JAVA

WBOY
Freigeben: 2024-08-30 15:57:54
Original
901 Leute haben es durchsucht

Reflection ist, wie der Name schon sagt, eine API-Funktionalität (Application Programming Interface) in JAVA, über die die Laufzeitinstanz der Klasse vollständig untersucht werden kann. Es ist Teil des Java.lang.reflect-Pakets. Dieses Paket muss beim Start des Programms importiert werden, und dann werden Funktionen aufgerufen, um die Funktionalität der „Reflexion“ zu verstehen. Das Verhalten jeder Klasse kann untersucht werden; Metadaten können mithilfe der Reflection-API zur Laufzeit extrahiert oder geändert werden.

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Syntax

Die Syntax allgemeiner Funktionen unter der Reflection-API zum Extrahieren der Klasseninformationen ist unten angegeben:

  • public String getName( Parameter): Diese Funktion gibt den Klassennamen zurück.
  • public boolean isInterface( Parameter): Diese Funktion prüft, ob die Klasse eine Schnittstelle ist oder nicht und gibt einen booleschen Wert (wahr oder falsch) zurück.
  • public boolean isArray( Parameter): Diese Funktion prüft, ob die Variable ein Array ist oder nicht und gibt einen booleschen Wert (wahr oder falsch) zurück.
  • public Constructor[] getDeclaredConstructors( parameter ) throws SecurityException: Diese Funktion überprüft die Konstruktoren in der Klasse und gibt die Anzahl der in einer bestimmten Klasse verwendeten Konstruktoren zurück. Darüber hinaus gibt es eine Sicherheitsausnahme und Haken, die dafür sorgen, dass das Programm störungsfrei funktioniert.
  • public Method[] getDeclaredMethods( Parameter ) löst SecurityException aus: Diese Funktion überprüft die Methoden in der Klasse und gibt die Anzahl der in einer bestimmten Klasse verwendeten Methoden zurück. Darüber hinaus verfügt es über eine Sicherheitsausnahme und damit verbundene Fänge, damit das Programm störungsfrei funktioniert.
  • öffentliche Klasse getSuperclass( Parameter): Diese Funktion gibt die Oberklasse der Basisklasse zurück.
  • öffentlicher boolescher Wert ist primitiv (Parameter): Diese Funktion prüft, ob der angegebene Parameter primitiv ist oder nicht und gibt einen booleschen Wert zurück.

Wie funktioniert Reflection in JAVA?

Die Reflection-Klasse verwendet verschiedene im Java.lang.reflect-Paket definierte Methoden, um die Klasseninformationen zu extrahieren. Die Informationen zur Klasse können mit der Methode getClass(), zu Konstruktoren mit der Methode getConstructors() und zu Methoden mit der Methode getMethods() extrahiert werden. Diese Methoden werden in der Reflection-API definiert, geben jedoch die Informationen der Klasse zurück, einschließlich Methoden, Konstruktoren und mehr. Die Reflection API wird in JAVA-Programmen und IDEs (Integrated Development Environment) wie Eclipse und Netbeans verwendet. Dies kann anhand der Beispiele im folgenden Abschnitt gut verstanden werden.

Beispiele für Reflexion in JAVA

Verschiedene Beispiele sind unten aufgeführt:

Beispiel #1

Code:

//package test;
import java.lang.Class;
public class test{
public static void main(String args[]){
Class<Boolean> c1 = boolean.class;
System.out.println("Here, the class name is: "+c1.getName());
Class<test> c2 = test.class;
System.out.println("This is another instance of class is used to derive class name : "+c2.getName());
}
}
Nach dem Login kopieren

Ausgabe:

Reflexion in JAVA

Erklärung: Bitte überprüfen Sie das oben bereitgestellte Beispiel. Dies verfügt über ein Paket, das alle Klassen mit dem Namen „test“ enthält. Das Testpaket hat eine Klasse „test deklariert“. Diese Klasse enthält auch die Hauptmethode, von der aus die Ausführung des Programms gestartet wird. Die Klasse „Klasse ist die Bezeichnerreflexionsklasse in jAVA. Diese Klasse wird mit Hilfe der oben deklarierten Bibliothek „java.lang.Class“ aktiviert. Boolean selbst ist eine Klasse in JAVA. Boolean ist ein primitiver Datentyp wie string, int oder char. Dieses Beispiel zeigt, dass wir die Informationen primitiver Datentypen extrahieren können (was letztendlich die Klasse in JAVA ist, und das ist der Grund, warum JAVA als reine objektorientierte Sprache bezeichnet wird). Die Funktion „getName()“ wird verwendet, um den Namen abzurufen einer Klasse, die hier durch ein Objekt namens „C1“ instanziiert wird.

In der nächsten Zeile wird anstelle der Verwendung eines primitiven Datentyps eine benutzerdefinierte Datentyp-„Klasse“ mit dem Namen „test“ zum Extrahieren der Daten berücksichtigt. „Klasse“ ist eine Reflexionsklasse, die mit einem Objekt namens „C2“ instanziiert wird. Hier wird der Klassenname getestet und das Objekt wird verwendet, um den Namen dieser Klasse mithilfe der Funktion „getName()“ abzurufen. Die endgültige Ausgabe enthält den zurückgegebenen Wert dieser Funktionen und wird auf dem Ausgabebildschirm angezeigt.

Beispiel #2

Code:

//package test;
import java.lang.Class;
class Simple{}
public class test{
public static void main(String args[]){
try{
Class<?> c=Class.<em>forName</em>("Simple");
System.<em>out</em>.println("The result is: "+c.isInterface());
}catch(Exception e){System.<em>out</em>.println(e);}
}
}
Nach dem Login kopieren

Ausgabe:

Reflexion in JAVA

Erklärung: Im obigen Beispiel wird ein Paket mit dem Namen „test“ erstellt, wie im vorherigen Beispiel Nummer 1 erstellt. Dieses Paket enthält einen Klassennamen „Simple“, der nicht die Hauptklasse ist . Die Hauptklasse ist hier die „Test“-Klasse, die die Hauptmethode enthält, von der aus die Ausführung des Programms gestartet wird. Die „Klasse “ ist ein Bezeichner der Reflektionsklasse, die hier über ein Objekt mit dem Namen „c“ instanziiert wurde. Dann wird dieses Objekt verwendet, um den Entscheidungsindikator (True oder False) der Funktion namens „isInaterface“ abzurufen. Diese Funktion ruft eine Klasse als Parameter ab; In diesem Fall war die Klasse, die als Parameter herangezogen wurde, die Klasse „Simple“. Da es sich bei dieser Klasse nicht um eine Schnittstelle handelt, wird im Ausgabebildschirm als Ergebnis „false“ zurückgegeben. Um diese Funktion aufzurufen, wurde das Klassenobjekt „c“ verwendet.

Vorteile

Einige der Vorteile der Verwendung von Reflektion in JAVA sind unten aufgeführt:

  1. Dies ist eine der besten Möglichkeiten, Informationen für jede Klasse zu extrahieren. Diese Informationen können aus Informationen von Konstruktoren bis hin zu Klassen und Methoden bestehen.
  2. Einer der größten Vorteile dieser Funktionalität besteht darin, dass wir auch Informationen über private Methoden und Klassen extrahieren können. Mit dieser Funktion kann also alles, was mit böser Absicht im Programm versteckt ist, herausgezogen werden.
  3. Diese Funktionalität bietet Debuggern viel Flexibilität, da sie Klassen einfach debuggen können, anstatt zu jeder Klasse einzeln zu gehen.
  4. Dies fügt auch eine Erweiterbarkeitsfunktion hinzu, mit der man externe benutzerdefinierte Klassen mithilfe von Instanzen hinzufügen kann.
  5. Dies stellt mithilfe von Instanzen eine Manifestation der wahren Leistungsfähigkeit der OOP-Sprache dar.
  6. Dies wird beim dynamischen Laden und Neuladen von Klassen während eines Programmlaufs verwendet.

Fazit

JAVA-Reflektion ermöglicht es, die Klassen, Schnittstellen, Methoden und mehr zu untersuchen, ohne den Klassennamen überhaupt zu kennen. Dies alles wird während der Kompilierungszeit erledigt. Dies gilt als eine der mächtigsten Eigenschaften von JAVA, da damit Instanzen der Klasse erstellt und private Mitglieder der Klasse damit extrahiert werden können. Entwickler können dies zur Laufzeit und auch für die Zuordnung von Datenbankobjekten verwenden.

Das obige ist der detaillierte Inhalt vonReflexion in JAVA. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage