Die Reflexion der Java Basic Completion Series

Grundlegende Verwendung der Reflexion

Der Reflexionsmechanismus von Java ist zur Laufzeit verfügbar. Für jede Klasse können Sie alle Eigenschaften und Methoden der Neuklassifizierung kennen. Für jedes Objekt können Sie alle Methoden und Eigenschaften aufrufen. Sie können ihn über den Zeichenfolgennamen einer Klasse abrufen Die Informationen dieser Klasse werden gemäß dem Namen der Methode aufgerufen. Diese Funktion zum dynamischen Abrufen von Informationen und zum dynamischen Aufrufen von Objektmethoden wird als Reflexionsmechanismus der Java-Sprache bezeichnet.

Die Reflexion von Java umfasst hauptsächlich die folgenden Kategorien:

Klassenname Wirkung
Klasse Eine Klasse, die Java entspricht
Methode Eine Methode, die der Java-Klasse entspricht
Feld Entspricht einem Feld der Java-Klasse
Konstrukteur Entspricht einer Konstruktionsmethode der Java-Klasse

Hier betrachten wir die Erfassungsmethode dieser vier Objekte:

//Class对象的获取
Class aClass1 = String.class;
Class aClass2 = "".getClass();
try {
    Class aClass3 = Class.forName("java.lang.String");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

Nachdem wir das Class-Objekt erhalten haben, können wir drei weitere Objekte über die Methode des Class-Objekts abrufen:

Method[] methods = aClass1.getMethods();
Method[] methods2 = aClass1.getDeclaredMethods();

Field[] fields = aClass1.getFields();
Field[] fields2 = aClass1.getDeclaredFields();

Constructor[] constructors = aClass1.getConstructors();
Constructor[] constructors2 = aClass1.getDeclaredConstructors();

Deklariert bedeutet, alle Methoden der aktuellen Klasse abzurufen, einschließlich privater Methoden, jedoch nicht der übergeordneten Klasse. Ohne diesen Parameter werden alle öffentlichen Methoden der Klasse abgerufen, einschließlich der öffentlichen Methoden der übergeordneten Klasse.

Dann können wir einige Methoden für diese vier Objekte verwenden, um den Zweck des Erstellens von Objekten, Aufrufen von Methoden, Abrufen von Eigenschaften usw. zu erreichen.

Im Folgenden stellen wir einige Anwendungsszenarien der Reflexion vor.

Rufen Sie systemprivate Methoden auf
try {
    Field field = Person.class.getDeclaredField("name");
    field.setAccessible(true);

    String name = (String) field.get(new Person("Tony",24));
    System.out.println(name);

} catch (NoSuchFieldException | IllegalAccessException e) {
    e.printStackTrace();
}

Nachdem wir das Reflexionsobjekt erhalten haben, das der privaten Eigenschaft oder dem privaten Feld entspricht, können wir die Systemberechtigungsprüfung umgehen, indem wir die setAccessible-Methode aufrufen, um den Zweck des Aufrufs des privaten Felds oder der privaten Methode zu erreichen.

Der Reflection-Aufruf ist in der aktuellen Kompilierungsumgebung nicht vorhanden, es gibt jedoch Klassen in der spezifischen Betriebsumgebung

Beim Programmieren in Java gibt es einige Klassen, die wir in der aktuellen Kompilierungsumgebung nicht haben, aber es gibt diese Klasse in der spezifischen Betriebsumgebung. Dann können wir sie natürlich nicht mit der herkömmlichen Methode aufrufen, aber wir können diese Klasse durch Reflektion und Aufruf erstellen Die darin enthaltenen Methoden und Felder können in der Android-Entwicklung verwendet werden, wenn Sie Middleware-Technologie verwenden (Verwendung von selbst entwickelter Middleware für die Kommunikation zwischen System und App, und schließlich wird Middleware in das System gepackt). Am häufigsten wird jedoch die vom Client in der Middleware verwendete Schnittstelle verfügbar gemacht und zum Aufrufen auf den Client gestellt.

发布了19 篇原创文章 · 获赞 8 · 访问量 4041

Ich denke du magst

Origin blog.csdn.net/u014068277/article/details/102887652
Empfohlen
Rangfolge