• Java 反射


    反射
    放射定义在反射包中:java.lang.reflect包。
    反射机制:Java中动态获取类的信息的技术。

    扩展功能:
    1:使用多态:
    暴露接口,实现接口,new类调用方法,多态调用。
    2:使用反射:
    如果代码已经写好了,现在无法new类。使用反射。
    要运行的类不确定,配置文件配置类,解析配置文件,找到配置的类,反射加载、创建、调用。

    Class类:
    用于描述字节码文件的类。内部提供了获取类内的内容的的方法。
    放射就是依靠该类实现的。
    想要获取一个类的内容,获取该类的字节码文件对象。

    获取字节码文件对象:
    1:Object类中的getClass()方法。
    需要先有对象,然后调用getClass()方法。
    2:使用类的class属性。
    需要先知道类名,然后调用class属性。
    3:使用Class类中的 Class forName(String 全类名)方法。
    他会根据类名到ClassPath中找类。

    使用Class的对象获取类内容:
    构造对象:
    空参构造:
    使用Class类构造别的类实例通过:c.newInstance()相当于new Xxx();
    使用Class类构造实例只有这一个方法。
    有参构造:
    如果需要使用有参构造,通过获取并调用有参构造方法来实现。
    获取构造方法:
    getConstructor(Class<?>... parameterTypes)
    getConstructors()
    getDeclaredAnnotations()
    以上三个方法会返回一个Constructors对象。即构造方法对象。
    Constructors中有创建对象的方法。
    获取字段:
    Field[] getFields()
    Field getField(String name)
    Field getDeclaredField(String name)
    Field[] getDeclaredFields()
    返回一个Field对象。
    获取函数:
    Method[] getMethods()
    Method getMethod(String name, Class<?>... parameterTypes)
    返回一个Method对象
    使用Method中的Object invoke(Object obj, Object... args)方法调用
    obj是所属对象,args是参数列表。

    Constructors类:
    构造方法类,用于描述构造方法。
    Field类:
    字段类,用于描述字段。
    Method类:
    方法类,用于描述方法。
  • 相关阅读:
    f2fs源码解析(五) node管理结构梳理
    没有什么好神秘的: wait_on_page_bit
    write_back 浅浅分析
    f2fs解析(六)
    转载软件需求文档标准格式
    转载 如何设计一个优秀的数据库
    转载 MySQL创建表的语句 示例
    equals和==的区别 (Java基础)
    转载 【Linux】Linux中常用操作命令
    windows 注册表
  • 原文地址:https://www.cnblogs.com/Xmingzi/p/6635873.html
Copyright © 2020-2023  润新知