编写一段程序,使用java反射中的invoke方法对于Person类调用其setter和getter。
时间: 2024-03-15 18:46:41 浏览: 101
好的,可以的。以下是一个简单的示例代码:
```java
import java.lang.reflect.Method;
public class ReflectionExample {
public static void main(String[] args) throws Exception {
// 获取Person类的Class对象
Class<?> personClass = Person.class;
// 获取setName和getName方法
Method setNameMethod = personClass.getMethod("setName", String.class);
Method getNameMethod = personClass.getMethod("getName");
// 创建Person对象
Person person = new Person();
// 使用setNameMethod来调用setName方法设置name属性为"John"
setNameMethod.invoke(person, "John");
// 使用getNameMethod来调用getName方法获取name属性的值
String name = (String) getNameMethod.invoke(person);
// 输出结果
System.out.println("Person's name is " + name);
}
}
class Person {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
```
运行上面的代码,输出结果为:
```
Person's name is John
```
这里,我们首先获取了Person类的Class对象,然后获取了setName和getName方法。接着,我们创建了一个Person对象,并使用setNameMethod来调用setName方法设置name属性为"John",使用getNameMethod来调用getName方法获取name属性的值并赋值给name变量。最后,我们输出了结果。
阅读全文