一、获取属性结构

  1、getFields()

    getFields():获取当前运行时类及其父类中声明为public访问权限的属性

    Demo:

 1     @Test
 2     public void test1() {
 3 
 4         Class clazz = Person.class;
 5 
 6         //获取属性结构
 7         //getFields():获取当前运行时类及其父类中声明为public访问权限的属性
 8         Field[] fields = clazz.getFields();
 9         for (Field f : fields) {
10             System.out.println(f);
11         }
12     }

 

    运行结果:

    

 

  2、getDeclaredFields()

    getDeclaredFields():获取当前运行时类中声明的所有属性。(不包含父类中声明的属性)

    Demo:

 1     @Test
 2     public void test2() {
 3 
 4         Class clazz = Person.class;
 5 
 6         //获取属性结构
 7         //getDeclaredFields():获取当前运行时类中声明的所有属性。(不包含父类中声明的属性)
 8         Field[] declaredFields = clazz.getDeclaredFields();
 9         for(Field f : declaredFields){
10             System.out.println(f);
11         }
12     }

     运行结果:

     

 

  3、getField(String name)

    getField(String name):根据字段名来获取运行时类中 public  修饰的成员变量

    Demo:

 1     @Test
 2     public void test3() throws NoSuchFieldException {
 3 
 4         Class clazz = Person.class;
 5 
 6         //获取属性结构
 7         //getField():根据字段名来获取当前运行时类中 public 修饰的成员变量
 8         Field field = clazz.getField("id");
 9         System.out.println(field);
10     }

 

  4、getDeclaredField(String name)

    getDeclaredField(String name):根据字段名来获取当前运行时类中的成员变量,忽略修饰符;

    Demo:

 1     @Test
 2     public void test4() throws NoSuchFieldException {
 3 
 4         Class clazz = Person.class;
 5 
 6         //获取属性结构
 7         //getField():根据字段名来获取获取当前运行时类中 public 修饰的成员变量
 8         Field field = clazz.getDeclaredField("name");
 9         System.out.println(field);
10     }

 

 

二、获取成员变量的信息

    一个类中的成员变量可以有修饰符,数据类型和变量名等信息。这些都可以获取:

    常用方法:

public int getModifiers() 以整数形式返回此Field的修饰符

public Class<?> getType() 得到Field的属性类型

public String getName() 返回Field的名称。

 

    Demo:

 1     @Test
 2     public void test1(){
 3         Class clazz = Person.class;
 4         Field[] declaredFields = clazz.getDeclaredFields();
 5         for(Field f : declaredFields){
 6             //1.权限修饰符
 7             int modifier = f.getModifiers();
 8             System.out.print(Modifier.toString(modifier) + "\t");
 9 
10             //2.数据类型
11             Class type = f.getType();
12             System.out.print(type.getName() + "\t");
13 
14             //3.变量名
15             String fName = f.getName();
16             System.out.print(fName);
17 
18             System.out.println();
19         }
20     }

 

     运行结果:

      

 

    (1)修饰符

      获取的修饰符返回值是一个 int,而不是期望的字符串,这是因为在 Modifier 类中声明了对应的常量值。

      

 

      调用 Modifier 类的 toString() 方法就可以获取对应值的修饰符。

 

    (2)数据类型

      调用属性的 getType() 就可以获取数据类型,而它也是一个 Class 对象。

    

 

三、

 

posted on 2021-06-14 19:33  格物致知_Tony  阅读(210)  评论(0编辑  收藏  举报