Java-反射

85 阅读1分钟

记录

日期说明
2023/1/1首次创建
2023/2/18增加运行时类信息

总纲

关于反射的一些概念总结

基础概念

  • 如果方法或变量不是public,需要调用setAccessible(true)
  • 功能
    • 在运行时判断任意一个对象所属的类
    • 在运行时构造任意一个类的对象
    • 在运行时判断任意一个类锁具有的成员变量和方法
    • 在运行时电泳任意一个对象的方法
  • 用途:开发各种通用框架
  • 重点:invoke

创建实例

  • 使用class对象的newInstance方法
  • 先获取Constructor对象,再调用Constructor对象的newInstance方法

Constructor构造器

  • getConstructor:只能获得public权限的构造方法
  • getDeclaredConstructor:可以获得任何访问权限的构造方法
  • getConstructors:获得所有public访问权限的构造方法
  • getDeclaredConstructors:获得全的构造方法

field变量

  • getDeclaredFields
  • getFields
  • getDeclaredField
  • getField

method方法

  • getDeclaredMethod
  • getMethod
  • getDeclaredMethods
  • getMethods

isInstance

instanceOf

class对象

  • class对象的静态方法:forName
  • 直接获取某个对象的class:int class、Integer.TYPE
  • 调用对象的方法:getClass

泛型类型

  • getGenericParameterTypes
    • getRawType
    • getActualTypeArguments

运行时类信息

其他

  • 修饰符:getModifiers
  • 类名:getName、getSimpleName
  • 包信息:getPackage
  • 父类:getSuperClass
  • 接口:getInterfaces