A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-4-26 10:48 编辑

反射学习笔记

  • 反射:  

    • Reflect. 在程序运行时, 获取任何一个类的所有属性和方法(包括私有的), 调用任意一个对象的所有属性和方法(包括私有的)


  • 反射的前提

    • 获取类的字节码对象


  • 获取字节码对象的3种方法

    • 对象.getClass()
    • 类名.class
    • Class.forName(String clasName)
      反射使用的相关类和方法

      • java.lang.Class类: 类的字节码对象

        • 获取构造方法

          • Constructor<?>[] getConstructors(): 以数组形式返回该类中所有public的构造方法. 如果没有public的, 则数组长度为0
          • Constructor<?>[] getDeclaredConstructors(): 以数组形式返回该类中所有权限的构造方法, 包括private的. 如果该类是接口, 基本类型, 数组, void, 则数组长度为0
          • Constructor<T> getConstructor(Class<?>... parameterTypes): 根据参数列表返回指定的public的构造方法. 参数列表填写参数的字节码对象
          • Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes): 根据参数列表返回指定的所有权限的构造方法, 包括private的. 参数列表填写参数的字节码对象


        • 创建对象

          • T newInstance(): 使用该类的无参构造创建一个对象



      • java.lang.reflect.Constructor类: 构造方法对象

        • T newInstance(): 通过无参构造方法对象创建一个类的对象
        • T newInstance(Object... initargs): 通过有参构造方法对象创建一个类的对象, 传入构造方法所需的参数列表
        • void setAccessible(boolean canAccess): 设置为true时禁用Java的访问安全检查, 可以访问所有权限的构造方法
        • JavaBean
          • 就是一个类
          • 作用: 用于封装和存储数据
          • 规范

            • 类必须是public修饰的
            • 成员变量必须是private的
            • 必须有public的set/get方法
            • 至少提供一个无参构造方法
            • 实现Serializable接口(当对象需要通过IO流传输时)
            • BeanUtils工具类
            •   - Apache组织提供的第三方类库`Commons`中的一个组件      - 作用:        - 利用反射技术给一个类的对象的成员属性赋值或获取值, 用于快速封装数据到JavaBean      - BeanUtils类常用的3个方法        - `static void setProperty(Object bean, String name, Object value)`: 给JavaBean对象的成员属性赋值, 传入对象, 成员属性名, 属性值        - `static String getProperty(Object bean, String name)`: 获取JavaBean成员属性的属性值, 传入对象, 成员属性名, 返回属性值的字符串形式        - `static void populate(Object bean, Map properties)`: 给JavaBean对象的成员属性赋值, 传入对象, Map的key是属性名, value是属性值








1 个回复

正序浏览
我来占层楼啊   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马