五、在Java的反射获取Student类中的name和school属性,将动态实例化的对象student的名字设置为李四,school设置为湖南软件职业技术大学。(共35分) student类的属性定义如下: public class Student { public String name; int age; private String school; }
时间: 2024-02-28 20:55:27 浏览: 68
Java 采用反射获取class属性值的实现代码
好的,以下是Java的示例代码,可以反射获取 `Student` 类中的 `name` 和 `school` 属性,并将动态实例化的对象 `student` 的名字设置为 `"李四"`,`school` 设置为 `"湖南软件职业技术大学"`。
```java
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws IllegalAccessException, NoSuchFieldException {
Student student = new Student();
// 使用反射获取name和school属性
Field nameField = Student.class.getField("name");
Field schoolField = Student.class.getDeclaredField("school");
schoolField.setAccessible(true);
// 将动态实例化的对象student的名字设置为李四,school设置为湖南软件职业技术大学
nameField.set(student, "李四");
schoolField.set(student, "湖南软件职业技术大学");
// 验证属性值是否设置成功
System.out.println(student.name); // 输出:李四
System.out.println(schoolField.get(student)); // 输出:湖南软件职业技术大学
}
}
class Student {
public String name;
int age;
private String school;
}
```
在上面的代码中,我们首先定义了一个 `Student` 类,它有一个公有属性 `name` 和一个私有属性 `school`。在 `Main` 类中,我们创建了一个 `Student` 对象 `student`,然后使用反射获取 `name` 属性和 `school` 属性,其中 `school` 属性是私有的,我们需要使用 `setAccessible(true)` 方法将其设置为可访问。最后,我们使用 `nameField.set()` 方法将 `student` 的 `name` 属性设置为 `"李四"`,使用 `schoolField.set()` 方法将 `student` 的 `school` 属性设置为 `"湖南软件职业技术大学"`。最后,我们验证属性值是否设置成功。
阅读全文