zoukankan      html  css  js  c++  java
  • 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类:
    方法类,用于描述方法。
  • 相关阅读:
    【训练题】最优比率生成树 P1696
    2019/9/15 校内模拟赛 考试报告
    b 解题报告
    HDU4714 Tree2cycle 解题报告
    2019/9/2 校内练习赛 考试报告
    2019/8/31 校内模拟赛 考试报告
    2019/8/29 校内模拟赛 考试报告
    康托展开
    洛谷P3807卢卡斯定理
    矩阵
  • 原文地址:https://www.cnblogs.com/Xmingzi/p/6635873.html
Copyright © 2011-2022 走看看