反射获取一个类的字节码文件后如何调用成员方法?
时间: 2024-04-29 16:23:09 浏览: 16
反射获取一个类的字节码文件后,可以通过以下步骤调用成员方法:
1. 通过 Class 类的 forName() 方法获取类的 Class 对象。
2. 使用 Class 类的 newInstance() 方法创建类的实例。
3. 使用 Class 类的 getMethod() 方法获取方法的 Method 对象。
4. 调用 Method 对象的 invoke() 方法,传入类的实例和方法参数,执行方法。
示例代码:
```
import java.lang.reflect.*;
public class ReflectionDemo {
public static void main(String[] args) throws Exception {
// 获取类的 Class 对象
Class<?> cls = Class.forName("com.example.MyClass");
// 创建类的实例
Object obj = cls.newInstance();
// 获取方法的 Method 对象
Method method = cls.getMethod("myMethod", int.class, String.class);
// 调用方法
Object result = method.invoke(obj, 123, "hello");
System.out.println(result);
}
}
```
这里假设 MyClass 是一个包含 myMethod(int, String) 方法的类。调用该方法时,传入的参数分别是 123 和 "hello"。方法的返回值可以通过 invoke() 方法得到。