JAVA中通过反射机制访问对象属性Field
- 获取Field的属性修饰符
getModifiers返回的是int类型数据,
需要用Modifier类的toString方法转为对应的修饰符 - 获取Field的属性类型:
getType返回的是Class类型
通过调用Class类型的getSimpleName方法来获取类型名 - L获取Field的属性名称
field.getName()
public class FieldTest01 {
public static void main(String[] args) throws Exception{
//获取整个类
Class userClass = Class.forName("reflection.field.User");
//获取类中所有的属性
//getFields只会获取公开的(public)的属性,返回一个Field[]数组
Field[] fields = userClass.getFields();
//获取Field[]的长度
System.out.println(fields.length);//1
//取出这个Field
System.out.println(fields[0]);//name
//getDeclaredFields 获取所有类型的属性
Field[] fields2 = userClass.getDeclaredFields();
System.out.println(fields2.length);//4
System.out.println("==========================");
for (Field field : fields2){
//获取Field的属性修饰符
//getModifiers返回的是int类型数据,
// 需要用Modifier类的toString方法转为对应的修饰符
System.out.println(Modifier.toString(field.getModifiers()));
//获取Field的属性类型:
//getType返回的是Class类型
Class fieldType = field.getType();
// String typeName = fieldType.getName();
String typeName = fieldType.getSimpleName();
System.out.println(typeName);
//获取Field的属性名称
System.out.println(field.getName());
}
}
}
- 创建User类供测试:
public class User {
public String name = "zhangsan";
protected int age = 20;
double PI = 3.14;
private float ID = 2.0F;
}
版权声明:本文为qq_42843172原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。