Java反射调用类的方法可以通过以下步骤实现:
获取需要调用方法的类的Class对象,可以使用Class.forName()
方法传入类的全限定名获取,也可以通过对象的getClass()
方法获取。
通过Class对象的getMethod()
或getDeclaredMethod()
方法获取要调用的方法对象。getMethod()
方法可以获取公有方法,而getDeclaredMethod()
方法可以获取所有方法,包括私有方法。
设置方法的可访问性,如果要调用的方法是私有方法,可以使用setAccessible(true)
方法将其设置为可访问。
调用方法对象的invoke()
方法,并传入要调用方法的对象以及方法的参数。
以下是一个示例代码,演示了如何使用反射调用类的方法:
import java.lang.reflect.Method;
public class ReflectMethodExample {
public static void main(String[] args) throws Exception {
// 获取类的Class对象
Class<?> clazz = MyClass.class;
// 获取要调用的方法对象
Method method = clazz.getDeclaredMethod("myMethod", String.class, int.class);
// 设置方法的可访问性
method.setAccessible(true);
// 创建类的实例
MyClass myObject = new MyClass();
// 调用方法
method.invoke(myObject, "Hello", 123);
}
}
class MyClass {
private void myMethod(String str, int num) {
System.out.println("String: " + str);
System.out.println("Number: " + num);
}
}
以上代码中,我们通过反射调用了私有方法myMethod()
,并传入了字符串和整数参数。