Heim  >  Artikel  >  Java  >  So erhalten Sie Methoden in der Java-Reflektion

So erhalten Sie Methoden in der Java-Reflektion

anonymity
anonymityOriginal
2019-05-08 15:02:064611Durchsuche

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.

So erhalten Sie Methoden in der Java-Reflektion

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!

Stellungnahme:
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