Java的反射机制允许程序在运行时动态获取和操作类、对象、方法和属性等信息。下面是一个简单示例,展示了如何使用Java反射机制执行以下操作:
- 获取类的信息(名称、方法、字段等)
- 创建对象实例
- 调用对象的方法
- 获取和设置对象的属性值
import java.lang.reflect.*;
public class ReflectionExample {
public static void main(String[] args) throws Exception {
// 获取类的信息
Class clazz = MyClass.class;
System.out.println("类名称:" + clazz.getName());
// 获取方法信息
Method[] methods = clazz.getMethods();
System.out.println("类的方法:");
for (Method method : methods) {
System.out.println(method.getName());
}
// 获取字段信息
Field[] fields = clazz.getFields();
System.out.println("类的字段:");
for (Field field : fields) {
System.out.println(field.getName());
}
// 创建对象实例
Object obj = clazz.getDeclaredConstructor().newInstance();
// 调用对象的方法
Method method = clazz.getMethod("sayHello", String.class);
method.invoke(obj, "World");
// 获取和设置对象的属性值
Field field = clazz.getDeclaredField("name");
field.setAccessible(true); // 设置私有字段可访问
field.set(obj, "Alice");
System.out.println("对象的属性值:" + field.get(obj));
}
}
class MyClass {
public String name;
public void sayHello(String name) {
System.out.println("Hello, " + name + "!");
}
}
以上代码演示了如何使用反射机制获取类的信息(名称、方法、字段),创建对象实例,调用方法,以及获取和设置属性值。