java中用反射调用类的属性和方法
时间: 2024-01-17 18:04:59 浏览: 99
Java中可以使用反射机制来调用类的属性和方法,具体步骤如下:
1. 获取Class对象:通过调用Class.forName()方法,传入类的全限定名,获取该类的Class对象。
2. 创建实例:使用Class对象的newInstance()方法来创建该类的实例。
3. 获取属性:通过Class对象的getDeclaredField()方法或getField()方法(如果属性是public的)来获取该类的属性对象。
4. 获取方法:通过Class对象的getDeclaredMethod()方法或getMethod()方法(如果方法是public的)来获取该类的方法对象。
5. 设置属性值:通过属性对象的setAccessible(true)方法来打开访问权限,然后使用set()方法来设置属性值。
6. 调用方法:通过方法对象的setAccessible(true)方法来打开访问权限,然后使用invoke()方法来调用方法。
下面是一个简单的示例代码:
```java
public class ReflectionTest {
private String name = "Tom";
public void sayHello() {
System.out.println("Hello, " + name);
}
public static void main(String[] args) throws Exception {
// 获取Class对象
Class<?> clazz = Class.forName("ReflectionTest");
// 创建实例
Object obj = clazz.newInstance();
// 获取属性
Field field = clazz.getDeclaredField("name");
field.setAccessible(true);
field.set(obj, "Jerry");
// 获取方法
Method method = clazz.getDeclaredMethod("sayHello");
method.setAccessible(true);
method.invoke(obj);
}
}
```
运行以上代码,输出结果为:
```
Hello, Jerry
```
阅读全文