• 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修饰符的构造方法。

     代码演示:

    打印输出:

  • 相关阅读:
    【Java】云HIS云端数字医院信息平台源码
    buuctf web [极客大挑战 2019]BabySQL
    Cesium 问题:加载 geojson 文件后使用 remove 方法移除,但浏览器内存会持续增长并为得到释放直到浏览器崩掉
    管理类联考——逻辑——知识+记忆篇——综合推理——考点+记忆
    Redis内存不足解决方案
    逻辑运算符
    pytorch初学笔记(八):神经网络之卷积操作
    1023 组个最小数
    PostgreSQL VACUUM 之深入浅出 (一)
    UIAutomator2常用类之UiObject2
  • 原文地址:https://blog.csdn.net/denggongming/article/details/126475623