// Java反射示例代码
import java.lang.reflect.Method;
public class ReflectionExample {
public static void main(String[] args) {
try {
// 1. 获取类的Class对象
Class<?> clazz = Class.forName("java.util.ArrayList");
// 2. 创建类的实例
Object instance = clazz.getDeclaredConstructor().newInstance();
// 3. 获取方法对象
Method addMethod = clazz.getMethod("add", Object.class);
// 4. 调用方法
addMethod.invoke(instance, "Hello, Reflection!");
// 5. 获取并调用其他方法,例如size()
Method sizeMethod = clazz.getMethod("size");
int size = (int) sizeMethod.invoke(instance);
System.out.println("Size of ArrayList: " + size);
} catch (Exception e) {
e.printStackTrace();
}
}
}
获取类的Class对象:通过Class.forName()
方法可以动态加载一个类,并返回该类的Class
对象。这里我们加载了java.util.ArrayList
类。
创建类的实例:使用clazz.getDeclaredConstructor().newInstance()
来创建ArrayList
的一个实例。
获取方法对象:通过clazz.getMethod("add", Object.class)
获取ArrayList
类中的add
方法,其中Object.class
表示该方法需要一个Object
类型的参数。
调用方法:使用addMethod.invoke(instance, "Hello, Reflection!")
来调用ArrayList
实例的add
方法,并传入参数"Hello, Reflection!"
。
获取并调用其他方法:同样地,我们可以获取ArrayList
的size
方法,并调用它来获取当前ArrayList
的大小。
这段代码展示了如何使用Java反射机制动态地操作类、创建实例以及调用方法。
上一篇:java线程池
下一篇:java代码
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站