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()
,并传入了字符串和整数参数。