先创建好JavaBean对象
package com.example.myreflect3;
public class Student {
private String name;
private int age;
private String gender;
public Student() {
}
public Student(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
完整代码(懒得具体写了……)
package com.example.myreflect3;
import java.lang.reflect.Field;
public class MyReflectDemo3 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException {
//全类名:com.example.myreflect3.Student
Class<?> clazz = Class.forName("com.example.myreflect3.Student");
//获取class字节码文件的成员变量
System.out.println("===========获取class字节码文件的所有成员变量===========");
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields){
System.out.println(field);
}
//获取单个成员变量
System.out.println("===========获取class字节码文件的单个成员变量===========");
Field gender = clazz.getDeclaredField("gender");
System.out.println("gender: "+gender);
//获取单个成员变量的权限修饰符
System.out.println("===========获取单个成员变量的权限修饰符===========");
System.out.println("gender的权限修饰符:"+gender.getModifiers());
//获取单个成员变量的名称
System.out.println("===========获取单个成员变量的名称===========");
System.out.println("gender的变量名称:"+gender.getName());
//获取单个成员变量的类型
System.out.println("===========获取单个成员变量的类型===========");
System.out.println("gender的变量类型:"+gender.getType());
//获取成员变量记录的值
System.out.println("===========获取成员变量记录的值===========");
Student s = new Student("张三", 20, "男");
gender.setAccessible(true);
Object value = gender.get(s);
System.out.println("获取成员变量中记录的值:"+value);
//修改对象里面记录的值
System.out.println("===========修改对象里面记录的值===========");
System.out.println("修改前:"+s);
gender.set(s, "女");
System.out.println("修改后:"+s);
}
}
输出结果:
===========获取class字节码文件的所有成员变量===========
private java.lang.String com.example.myreflect3.Student.name
private int com.example.myreflect3.Student.age
private java.lang.String com.example.myreflect3.Student.gender
===========获取class字节码文件的单个成员变量===========
gender: private java.lang.String com.example.myreflect3.Student.gender
===========获取单个成员变量的权限修饰符===========
gender的权限修饰符:2
===========获取单个成员变量的名称===========
gender的变量名称:gender
===========获取单个成员变量的类型===========
gender的变量类型:class java.lang.String
===========获取成员变量记录的值===========
获取成员变量中记录的值:男
===========修改对象里面记录的值===========
修改前:Student{name='张三', age=20, gender='男'}
修改后:Student{name='张三', age=20, gender='女'}
Process finished with exit code 0