Day14_81_反射机制获取Class属性
反射机制获取Class属性
-
获取属性 方法一: Class对象 . getFields();只能用来获取公开的属性,不能获取有私有的或者受保护的属性
-
获取属性 方法二: Class对象 . getDeclaredFields() 获取该类中所有的属性包括私有属性和受保护的属性
-
field.getModifiers() 获取属性修饰符所代表的数字
-
Modifier.toString(modifymNumber); 将数字转换成修饰符名
-
field.getName() 属性对象.getName()获取属性名
-
field.getType()); 属性对象.getType()获取属性类型
-
代码实例
package com.shige.Reflect;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
/*
java.lang.reflect.Field 类中的属性 通过反射机制获取属性
*/
public class ReflectTest04 {
public static void main(String[] args) throws ClassNotFoundException {
//获取整个类
Class c=Class.forName("com.shige.Reflect.User");
//获取属性 方法一: Class对象.getFields();只能用来获取公开的属性,不能获取有私有的保护的
Field[] fields=c.getFields();
for (Field str:fields) {
System.out.println(str.getName()); //属性.getName()获取属性名
}
System.out.println("==================================================");
// 获取属性 方法二: Class对象.getDeclaredFields() 获取该类中所有的属性
Field[] fields1=c.getDeclaredFields();
for (Field field:fields1) {
//获取属性修饰符名
int modifymNumber=field.getModifiers(); //获取属性修饰符所代表的数字
String strModify= Modifier.toString(modifymNumber); //数字转换成修饰符名
System.out.println(strModify); //输出修饰符
//获取属性名
System.out.println(field.getName()); //属性对象.getName()获取属性名
//获取属性类型名
//将属性类型赋值给一个Class对象
Class type=field.getType();
System.out.println(type.getSimpleName()); //获取属性名字 方式一
System.out.println(field.getType()); //属性对象.getType()获取属性类型 方式二
}
}
}