美文网首页
Java反射机制:

Java反射机制:

作者: Nith | 来源:发表于2017-02-20 15:21 被阅读0次

    功能:

    • 在运行中分析类的能力
    • 在运行中查看对象
    • 实现通用的数组操作代码
    • 利用Method对象,类似C++中的函数指针

    Class是保存着所有对象的信息的类,一个Class对象表示一个特定类的属性。
    Field、Method、Constructor三个类分别用来描述类的域、方法和构造器。

    用法:

    1. 实例化class类对象 :
    • Class.forName("类名")
    • Obj.class
    • obj.getClass()
    1. 获得完整的包名和类名:
      class.getName()
    2. 获取对象的父类:
      class.getSuperClass()
    3. 实现的接口:
      class.getInterfaces()
    4. 调用无参构造器创建实例:
      class.newInstance()
    5. 获取构造器:
    • 公有:class.getConstructors()
    • 全部:class.getDeclaredConstructors()
    1. 获取成员变量:
    • 公有:class.getFields()
    • 全部:class.getDeclaredFields()
    1. 获取成员方法:
    • 公有:class.getMethods()
    • 全部:class.getDeclaredMethod()
    1. 以整数的形式返回修饰符:
      constructor/field/method.getModifiers()
      ,可以使用Modifier.toString(int),isPublic(int)等方法
    • 0--无修饰符
    • 1--public
    • 2--private
    • 4--protected
    • 8--static
    • 16--final
    • 32--synchronized
    • 64--volatile
    • 128--transient
    • 256--native
    • 512-interface
    • 1024--abstract
    • 2048--strict
    1. 获取名字:getName()
    2. 描述参数类型的Class对象数组:
      constructor/method.getParameterTypes();
    3. 描述返回类型:
      method.getReturnType();
    4. 为反射对象设置可访问标志:
    • accessibleObject.setAccessible(boolean )
    • AccessibleObject.setAccessible(accessibleObject , boolean)
    1. 返回对象中用Field表示的成员变量值:
      field.get(obj)
    2. 用新值设定对象中Field表示的成员变量:
      filed.set(obj,value)
    3. 调用任意方法:
      method.invoke(...)

    相关文章

      网友评论

          本文标题:Java反射机制:

          本文链接:https://www.haomeiwen.com/subject/uhlewttx.html