zoukankan      html  css  js  c++  java
  • 反射机制

    一 什么是反射机制?

    访问已经装载到JVM中类或者对象的信息的机制称作反射机制。

    二 Class

    1.使用反射机制的第一步就是获得类或者对象在JVM中的对象,有三种方式:

    ⑴利用全限定性类名,调用forName方法创建:

    Class c=Class.forName("全限定性类名");

    ⑵利用该类的对象获取:

    Object obj=new Object();
    Class c=obj.getClass();

    ⑶直接使用类名创建:

    Class c=Object.class;//任何数据类型包含基本数据类型都有一个class属性

    2.相关方法

    • newInstance():调用无参构造方法创建对象,利用类只能通过无参构造方法创建对象,如果希望通过有参构造方法创建对象,必须借助构造方法。
    • Constructor[] getConstructors:获得所有权限为public的构造方法。
    • Constructor[] getConstructor(Class...parameterTypes):获得具有指定类型参数的构造方法。
    • Constructor[] getDeclaredConstructors:获得所有构造方法,包括private方法。
    • Method[] getMethods:获得所有权限为public的方法。
    • Field[] getFields:获得所有权限为public的成员变量。 

    三 Constructor

    • Class[] getParameterTypes:按照声明顺序以数组的形式返回构造方法中各参数的类型。
    • int getParameterCount:返回构造方法中参数的数目。
    • newInstance(Object...initargs):向该构造方法传入初始值创建对象。
    • getModifiers:返回代表构造方法修饰符的整数,一个整数包含多种权限修饰符的信息。再次调用静态方法解析,可以查看构造方法的修饰符。
    • setAccessible(true):将private构造方法转化为public类型的,就可以利用该构造方法创建对象了。

    通过反射机制访问构造方法的目的是利用有参构造方法创建对象。

    四 Method

    • getName:获取方法名.
    • getReturnType:返回值类型。
    • getParameterTypes:获取形参类型。
    • getModifiers:获取可以解析出修饰符的整数。
    • invoke(obj,args...):使用参数args执行obj对象中的该方法,具体方法必须依附于对象。

    通过反射机制访问对象中方法的目的是执行方法。

    五 Field

    • getName:获取成员变量的名称。
    • getType:获取成员变量的类型。
    • get(obj):获取指定对象obj中该成员变量的值。
    • setObject(obj,args):为指定对象obj中的该变量赋值为args。具体参数必须依附于对象。
    • setAccessible(true):将变量从private类型转化为public类型。

    通过反射机制访问成员变量的目的是为获取指定对象中成员变量的值,或者为成员变量赋值,即取值与赋值两个目的。

  • 相关阅读:
    wav格式
    python字符串操作
    云中Active Directory是如何工作的?
    Azure Active Directory中的特权身份管理如何运作?
    工作组下的共享设置
    重新审视虚拟桌面存储
    NAND
    如何使用PowerShell管理Windows服务
    如何应对云爆发架构?四种方法替你解忧
    配置网络策略中的 NAP 条件
  • 原文地址:https://www.cnblogs.com/tonghun/p/6933224.html
Copyright © 2011-2022 走看看