编写一段程序,使用java反射中的invoke方法对于Person类调用其setter和getter。
时间: 2024-03-15 22:46:43 浏览: 52
好的,以下是使用Java反射中的invoke方法对于Person类调用其setter和getter的示例代码:
```java
import java.lang.reflect.Method;
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) throws Exception {
// 创建 Person 对象
Person person = new Person("张三", 20);
// 获取 setName 方法对象
Method setNameMethod = Person.class.getMethod("setName", String.class);
// 调用 setName 方法
setNameMethod.invoke(person, "李四");
// 获取 getName 方法对象
Method getNameMethod = Person.class.getMethod("getName");
// 调用 getName 方法
String name = (String) getNameMethod.invoke(person);
System.out.println("name: " + name);
// 获取 setAge 方法对象
Method setAgeMethod = Person.class.getMethod("setAge", int.class);
// 调用 setAge 方法
setAgeMethod.invoke(person, 25);
// 获取 getAge 方法对象
Method getAgeMethod = Person.class.getMethod("getAge");
// 调用 getAge 方法
int age = (int) getAgeMethod.invoke(person);
System.out.println("age: " + age);
}
}
```
在这个示例代码中,我们首先创建了Person类,并定义了其属性和对应的setter和getter方法。然后在Main类中,我们通过反射获取了Person类中的setName、getName、setAge和getAge方法,并使用invoke方法调用了这些方法,从而实现了对Person对象属性的设置和获取。
阅读全文