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()获取属性类型 方式二



       }
   }
}
posted @ 2021-04-09 19:32  失昼  阅读(98)  评论(0)    收藏  举报