Field类用于给成员变量赋值的方法
方法介绍
1.Object get(Object obj)获取值
2.void set(Object obj, Object value)赋值
代码演示
//学生类
package com.itheima.myreflect4;
public class Student {
public String name;
public int age;
public String gender;
private int money = 300;
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
", money=" + money +
'}';
}
}
给成员变量赋值
public static void main(String[] args) {
getField1();
getField2();
}
//获取student类的money字段的值
private static void getField1() {
try {
Class<?> caizz = Class.forName("com.itheima.myreflect4.Student");
Field money = caizz.getDeclaredField("money");
//强转为 Student
Student instance = (Student) caizz.newInstance();
//money为私有 设置不检查
money.setAccessible(true);
int result = (int)money.get(instance);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
//给student类的money字段赋值
private static void getField2() {
try {
Class<?> clazz = Class.forName("com.itheima.myreflect4.Student");
Field money = clazz.getDeclaredField("money");
Student Student=(Student)clazz.newInstance();//强转为Student
money.setAccessible(true);//不检查
money.set(Student,200);//赋值
int result = (int)money.get(Student);//强转为int
System.out.println(result);//输出
} catch (Exception e) {
e.printStackTrace();
}
}
}