Java反射

什么是反射

反射(Reflection)是Java的特征之一,它允许运行中的Java程序获取自身的信息,并且可以操作类或对象的内部属性。

通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而 Java 反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使这个对象的类型在编译期是未知的。

反射的核心是 JVM 在运行时才动态加载类或调用方法/访问属性,它不需要事先(写代码的时候或编译期)知道运行对象是谁。

反射主要提供以下功能:

  • 在运行时判断任意一个对象所属的类
  • 在运行时构造任意一个类的对象
  • 在运行时判断任意一个类所具有的成员变量和方法(也可以private)
  • 在运行是你调用任意一个对象的方法

用途

反射最常见的是在我们使用IDE时,我们输入一个对象或类一按点号,编译器就会自动列出它的属性或方法。

反射最重要的用途就是开发各种框架。比如Spring通过XML文件配置Bean,为了保持保持框架的通用性,需要根据配置文件加载不同的对象或类,调用不同的方法。在这里运用反射在运行时动态加载需要加载的对象。

例子:

1

运用