Java高级知识复盘之反射

50 阅读2分钟

Java高级知识复盘之反射

  • 反射:运行过程中,动态的获取类的信息以及对类进行操作的机制反射机制
  • java程序的执行:
    • 1,编译阶段 源文件.java 经过编译器编译 编译为.class文件(字节码文件 二进制文件)
    • 2, 运行阶段 字节码文件被 类加载器 加载到JVM内存(方法区) 解释为机器指令 然后执行
  • 对象 类型Class 类对象;
  • 跨平台(一次编译 随处运行)

反射的使用

  • 1,获取类
  • 2,获取属性,变量
  • 3,获取构造器
  • 4,创建对象或调用对象

常用方法

获取类

获取类对象的方法

  • getClass()
  • Class.forName("全路径类名");

获取属性

  • getFields(): 获取public修饰的成员变量对象,包括从父类继承下来的
  • getField() :获取public修饰的成员变量对象,包括从父类继承下来的 ;指定名称进行获取
  • getDeclaredFields(): 只获取本类声明的成员变量(任意权限修饰符都可以) 不包括从父类继承下来的
  • getDeclaredField(): 只获取本类声明的成员变量(任意权限修饰符都可以) 不包括从父类继承下来的;指定名称进行获取
  • setAccessible():打破封装

获取构造器

  • getConstructors():获取public修饰的构造器
  • getConstructor(): 获取public修饰的构造器
  • getDeclaredConstructors():获取本类型的所有构造器
  • getDeclaredConstructor():获取本类型对应参数的构造器

调用对象

  • getMethods():获取public修饰的方法 包括从父类继承的
  • getMethod():获取public修饰的方法 包括从父类继承的
  • getDeclaredMethods(): 获取本类声明的方法(任意权限修饰符都可以)
  • getDeclaredMethod(): 获取本类声明的方法(任意权限修饰符都可以)
  • invoke():调用对应参数的方法