• 33.反射


    一、概述

    IDEA中的对象是怎么知道类有哪些属性,哪些方法的呢?

    通过反射技术对对象类进行解剖得到了类的所有成员和方法。

    什么是反射?

    可以利用反射在程序运行过程中对类进行解剖并操作类中的所有成员(成员变量,成员方法,构造方法)。

    使用反射操作类成员的前提是什么?

    首先要获得该类字节码文件对象,也就是class对象。

    反射在实际开发中的运用场景

    开发IDE(集成开发环境),比如IDEA,Eclipse

    各种框架的设计和学习 比如Spring,Hibernate,Struct,Mybaits....

    总结:反射是框架设计的灵魂,能够让框架更具有通用性,灵活性。

    二、获得class对象类的三种方式

    方式1:通过类名.class获得。

    方式2:通过对象名.getClass()方法获得。

    方式3:通过Class类的静态方法forName获得

    代码演示:

    打印输出:

     总结:三个方式获取的为同一个class对象。

    三、Class类常用方法

    1.获得类名字符串:类名         String getSimpleName();

    2.获得类全名:包名+类名       String getName();  

    3.创建Class对象关联类的对象【依赖无参构造而存在】   T newInstance() ;  

    代码演示:

     打印输出:

     

    四、Class类中与Constructor相关的方法

    //获取单个指定参数的构造方法
    1. Constructor getConstructor(Class... parameterTypes)  
            * 根据参数类型获得对应的Constructor对象,按照构造方法的参数类型及顺序传入
            * 只能获得public修饰的构造方法
        
        public Student(int age,String name){}
     2. Constructor getDeclaredConstructor(Class... parameterTypes)
            * 根据参数类型获得对应的Constructor对象
            * 可以是public、protected、package-private、private修饰符的构造方法。
        
    //获取所有符合条件的构造方法
     3. Constructor[] getConstructors()
           * 获得类中的所有构造方法对象,只能获得public的
     4. Constructor[] getDeclaredConstructors()
           * 获得类中的所有构造方法对象
           * 可以是public、protected、package-private、private修饰符的构造方法。

     代码演示:

    打印输出:

  • 相关阅读:
    前端基础(Vue Router路由的使用)
    机器学习---决策树 算法原理及代码实现
    试剂盒和示踪剂—艾美捷FLIVO探针活体凋亡检测分析
    构建Buildroot根文件系统(I.MX6ULL)
    How about a push-type floor scrubber
    如何用javascript生成网络计算器
    pytorch 中 nn.Conv2d 解释
    爬虫----js逆向某宝h5的sign参数
    JavaScript正则表达式加密
    mysql更新 在字符串中的指定字符后面拼接字符串
  • 原文地址:https://blog.csdn.net/denggongming/article/details/126475623