Java的反射

2023-05-17 09:50:09 浏览数 (1)

Java的反射

Java反射机制可以完成:

  • 在运行时判断任意一个对象所属的类
  • 在运行时构造任意一个类的对象
  • 在运行时得到任意一个类所具有的成员变量和方法
  • 在运行时调用任意一个对象的成员变量和方法
  • 生成动态代理

反射相关的主要类:

  1. Java.long.Class:代表一个类,Class对象表示某个类加载后在堆中的对象
  2. Java.lang.reflect.Method:代表类的方法
  3. Java.lang.reflect.Field:代表类的成员变量
  4. Java.lang.reflect.Constructor:代表类的构造方法

Class类对象不是new出来的,而是系统创建的。这里怎么理解呢,Class类是由loadClass()方法完成类加载,生成了某个类对应的Class类对象。

对于某个类的Class类对象,在内存中只有一份,因为类只加载一次。

在JDK1.9往上,不再使用newInstance()。还可以通过getField()获取到属性。

通过“反射”,我们可以将Java这种静态语言附加上动态特性,换句话说,就是反射机 制是Java实现动态语言的关键,也就是通过反射实现类动态加载。怎么理解呢,就是在运行时加载需要的类,如果 运行时不用该类,则不报错,降低了依赖性。

类加载三阶段:

  1. 加载阶段(Loading)
  2. 链接阶段(验证、准备、解析)
  3. 初始化阶段(initalization)

0 人点赞