public class FieldTest {
@Test
public void test1(){
Class clazz = Person.class;
//获取属性结构
Field[] fields = clazz.getFields();
for(Field f:fields){
System.out.println(f);//public int test.Person.id
//public double test.Creature.weight
}
//getFields()方法:获取当前运行时类及其所有父类中所有声明为public的属性
System.out.println();
//获取当前运行时类自己定义的属性(不包含父类中声明的属性)。任何属性的权限都可以拿到
Field[] declaredField = clazz.getDeclaredFields();
for(Field f:declaredField){ //private java.lang.String test.Person.name
//int test.Person.age
// public int test.Person.id
System.out.println(f);
}
}
//拿到属性中具体的结构(属性的权限修饰符,数据类型,变量名,变量值要看是静态还是非静态)
//如果属性是非静态(因为非静态要有对象才行,因为没有对象所以拿不到变量值)
@Test
public void test2(){
Class clazz = Person.class;
Field[] declaredFields = clazz.getDeclaredFields();
for(Field f:declaredFields){
//1.获取权限修饰符
int modifier = f.getModifiers();//获取f的权限修饰符,f是某一个属性
System.out.print(modifier+"\t");//2,因为把权限和数对应了起来
//0
//1
System.out.print(Modifier.toString(modifier)+"\t");//把int类型的值翻译成对应的权限。Modifier是一个类
//注意,默认权限的输出结果为空白
//private
//
//public
//2.数据类型
Class type = f.getType();
System.out.println(type+"\t");//如果想把输出结果中的class去掉,可以用type.getName()+"\t"
//3.变量名
String name = f.getName();
System.out.println(name);
System.out.println();
}
}
}
获取运行时类的属性结构
最新推荐文章于 2022-01-08 15:42:19 发布