数据bean:
package com.mth.bean;
public class Person {
private String name;
private int age;
public String city;
private Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
System.out.println("空参构造方法");
}
@Override
public String toString() {
return name + "......" + age + "......" + city;
}
}
测试类:
package com.mth.test;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import com.mth.bean.Person;
public class ReflectFiledDemo {
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("com.mth.bean.Person");
System.out.println(clazz);
// 获取所有的成员属性 返回数组(public 修饰的)
Field[] fields = clazz.getFields();
for (Field field : fields) {
System.out.println(field);
}
System.out.println("=====================================");
// 获取一个field对象 公共的(public 修饰的)
Field f = clazz.getField("city");
System.out.println(f);
System.out.println("=====================================");
// 获取所有的成员变量 包括私有的属性
Field[] fields1 = clazz.getDeclaredFields();
for (Field field : fields1) {
System.out.println(field);
}
System.out.println("=====================================");
// 获取一个私有的属性
Field f1 = clazz.getDeclaredField("name");
System.out.println(f1);
System.out.println("=====================================");
// 建立一个对象
Class clazz1 = Class.forName("com.mth.bean.Person");
Constructor con = clazz1.getConstructor();
Person p = (Person) con.newInstance();
System.out.println(p);
// 获得私有属性name age;
Field ff1 = clazz.getDeclaredField("name");
Field ff2 = clazz.getDeclaredField("age");
Field ff3 = clazz.getField("city");
ff1.setAccessible(true);
ff1.set(p, "zs");
ff2.setAccessible(true);
ff2.setInt(p, 20);
ff3.set(p, "DL");
System.out.println("通过获得属性 得到的对象..." + p);
}
}