Heim >Java >javaLernprogramm >So erhalten Sie Methoden in der Java-Reflektion
Was ist der Reflexionsmechanismus von Java?
Der JAVA-Reflektionsmechanismus befindet sich im laufenden Zustand. Für jede Klasse können Sie alle Eigenschaften und Methoden dieser Klasse kennen. Für jedes Objekt können Sie jede seiner Methoden aufrufen. und Attribute ; diese dynamisch erhaltenen Informationen und die Funktion des dynamischen Aufrufs von Objektmethoden werden als Reflexionsmechanismus der Java-Sprache bezeichnet.
Um eine Klasse zu zerlegen, müssen Sie zunächst das Bytecode-Dateiobjekt der Klasse abrufen. Die Dissektion verwendet die Methoden in der Class-Klasse. Sie müssen also zuerst das Klassentypobjekt abrufen, das jeder Bytecode-Datei entspricht.
Reflexion besteht darin, die verschiedenen Komponenten in der Java-Klasse dem Java-Objekt zuzuordnen
Zum Beispiel: Eine Klasse verfügt über: Mitgliedsvariablen, Methoden, Konstruktoren, Pakete und andere Informationen. Mithilfe der Reflection-Technologie kann eine Klasse zerlegt und jede Komponente einem Objekt zugeordnet werden.
Das Bild zeigt den normalen Ladevorgang einer Klasse: Das Reflexionsprinzip liegt im Klassenobjekt.
Machen Sie sich mit dem Ladevorgang vertraut: Der Ursprung des Klassenobjekts besteht darin, die Klassendatei in den Speicher einzulesen und ein Klassenobjekt dafür zu erstellen.
Drei Möglichkeiten, Klassenobjekte zu erhalten
1.1 Objekt ——> getClass();
1.2 Jeder Datentyp (einschließlich grundlegender Datentypen) verfügt über ein „statisches“ Klassenattribut
1.3 über die statische Methode der Klassenklasse: forName (String className) (häufig verwendet)
wobei 1.1 ist Aufgrund der getClass-Methode in der Object-Klasse, da alle Klassen die Object-Klasse erben. Rufen Sie also die Object-Klasse auf, um
zu erhalten. Beispiel : Aufrufen der von der Klasse definierten Methode durch Reflektion
@Test // 通过反射调用类定义的方法 public void testInvokeMethod() throws Exception { Class clazz = Class.forName("java.lang.String"); // 定义参数类型 Class[] params = new Class[1]; params[0] = String.class; Method m = clazz.getDeclaredMethod("indexOf", params); // 设置参数 Object[] p = new Object[1]; p[0] = "e"; Integer s = (Integer) m.invoke("helloworld!", p); System.out.println(s); }
Das obige ist der detaillierte Inhalt vonSo erhalten Sie Methoden in der Java-Reflektion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!