Rufen Sie die Methode mithilfe der Reflection-API auf

Dieses Beispiel zeigt, wie eine Methode mithilfe der Reflection-API aufgerufen wird. Da wir uns bewusst sind, können wir mithilfe der Reflektionsklassen dynamisch eine Methode in einer anderen Klasse aufrufen. Beachten Sie, dass die Verwendung von Reflektion im Hinblick auf die Leistung teurer ist. Diese Programmierpraxis wird nur bei bestimmten Anforderungen verwendet, bei denen das Projekt dynamische Klassen erstellen und die darauf befindlichen Methoden aufrufen muss, wenn wir den Klassennamen zur Kompilierungszeit nicht kennen. In diesem Beispiel wird mithilfe der Reflection-API die Methode „append“ in der StringBuffer-Klasse aufgerufen.

  • Zuerst habe ich eine StringBuffer-Klasse und eine Append-Methode erstellt, um die String-Werte hinzuzufügen.
  • Verwenden Sie die API-Methode getClass(), um die Laufzeitklasse des StringBuffer abzurufen, und dann die API-Methode getMethod(String name, Class… parameterTypes) der Klasse, um das Methodenobjekt abzurufen, das die angegebene öffentliche Mitgliedsmethode der dargestellten Klasse oder Schnittstelle widerspiegelt durch dieses Klassenobjekt.
  • Sobald Sie das Methodenobjekt erhalten haben, verwenden Sie invoke (object,args), um die Methode mit Argumenten aufzurufen, die die Methode aus der zugrunde liegenden Originalklasse aufruft.

Schauen wir uns das einfache Beispiel an, um den Code zu verstehen:

package javabeat.net.reflection;

import java.lang.reflect.Method;

public class InvokeMethodExample {

	public static void main(String() args) throws Exception {

		StringBuffer strBuffer = new StringBuffer();

		strBuffer.append("JavaBeat Reflection Example");
		System.out.println("Original String : " + strBuffer);

		// Get the method name "append" using reflection
		Method appendMethod = strBuffer.getClass().getMethod("append", String.class);

		// Invoke method with arguments
		appendMethod.invoke(strBuffer, " Java Programming World!!");

		System.out.println("Invoked using Reflection: " + strBuffer);

	}
}

Ausgabe

Original String : JavaBeat Reflection Example
Invoked using Reflection: JavaBeat Reflection Example Java Programming World!!

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen