Verwendung von Reflection zum Aufrufen der Java-Methode zur Laufzeit

Verwendung von Reflection zum Aufrufen der Java-Methode zur Laufzeit

Reflection ist ein sehr nützlicher Ansatz, um mit der Java-Klasse zur Laufzeit umzugehen. Sie kann verwendet werden, um die Java-Klasse zu laden, ihre Methoden aufzurufen oder die Klasse zur Laufzeit zu analysieren.

In diesem Beispiel laden Sie eine Klasse mit dem Namen "AppTest" und rufen zur Laufzeit jede ihrer Methoden auf.

1. AppTest.java

Diese Java-Klasse und ihre Methoden werden später zur Laufzeit aufgerufen

package com.example.reflection;

public class AppTest{

    private int counter;

    public void printIt(){
        System.out.println("printIt() no param");
    }

    public void printItString(String temp){
        System.out.println("printIt() with param String : " + temp);
    }

    public void printItInt(int temp){
        System.out.println("printIt() with param int : " + temp);
    }

    public void setCounter(int counter){
        this.counter = counter;
        System.out.println("setCounter() set counter to : " + counter);
    }

    public void printCounter(){
        System.out.println("printCounter() : " + this.counter);
    }
}

2. ReflectApp.java

Diese Klasse lädt die Klasse "AppTest" und ruft ihre Methoden zur Laufzeit auf. Die Codes und Kommentare sind selbsterklärend.

package com.example.reflection;

import java.lang.reflect.Method;

public class ReflectApp{

    public static void main(String[] args) {

    //no paramater
    Class noparams[] = {};

    //String parameter
    Class[] paramString = new Class[1];
    paramString[0] = String.class;

    //int parameter
    Class[] paramInt = new Class[1];
    paramInt[0] = Integer.TYPE;

    try{
            //load the AppTest at runtime
        Class cls = Class.forName("com.example.reflection.AppTest");
        Object obj = cls.newInstance();

        //call the printIt method
        Method method = cls.getDeclaredMethod("printIt", noparams);
        method.invoke(obj, null);

        //call the printItString method, pass a String param
        method = cls.getDeclaredMethod("printItString", paramString);
        method.invoke(obj, new String("example"));

        //call the printItInt method, pass a int param
        method = cls.getDeclaredMethod("printItInt", paramInt);
        method.invoke(obj, 123);

        //call the setCounter method, pass a int param
        method = cls.getDeclaredMethod("setCounter", paramInt);
        method.invoke(obj, 999);

        //call the printCounter method
        method = cls.getDeclaredMethod("printCounter", noparams);
        method.invoke(obj, null);

    }catch(Exception ex){
        ex.printStackTrace();
    }
   }
}

3. Ausgabe

printIt() no param
printIt() with param String : example
printIt() with param int : 123
printCounter() : 999