package com;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
/**
* 需求:获取类的属性信息
* 实现方式:借助Field类存储相关信息并使用
* 要点: 私有属性的访问方式
*/
public class Example04 {
public static void main(String[] args) throws Exception{
Class typeInfo = BaseClass.class;
System.out.println("------获取属性的等级,类型,属性名--------");
Field[] allField = typeInfo.getDeclaredFields();
for(Field f :allField){
System.out.print(Modifier.toString(f.getModifiers()));
System.out.print(" " +f.getType().getSimpleName());
System.out.println(" " + f.getName());
}
BaseClass obj = new BaseClass(1,"jian",30,3);
System.out.println("\n------获取某一个具体的属性--------");
Field fieldInfo = typeInfo.getDeclaredField("name");
System.out.println(fieldInfo);
System.out.println("\n------允许访问私有属性--------");
fieldInfo.setAccessible(true);
System.out.println("\n------获取属性值--------");
Object value = fieldInfo.get(obj);
System.out.println(value);
System.out.println("\n------为对象的该属性赋值--------");
fieldInfo.set(obj, "yyyyyy");
System.out.println(fieldInfo.get(obj));
}
}