Java反向概述
反射(Reflection)机制是 Java 语言特性之一,是 Java被视为动态(或准动态)语言的一个关键特性。
Java反射有以下3个动态特性
- 运行时创建实例
- 运行期间调用方法
- 运行时更改属性
Java反射可以实现的功能
- 在运行时探知任意一个实例所属的类
- 在运行时构造任意一个类的实例
- 在运行时探知任意一个类所真有的方法和属性
- 在运行时调用任意一个实例的方法
Java反射常用的API
使用Java反射技术常用的类
java.lang.Class<T>类:反射的核心类,反射所有的操作都围绕该类来生成的。
java.lang.reflect.Constructor<T>类:表示类的构造方法。
java.lang.reflect.Field 类:表示类的属性,可以获取和设置类中属性的值。
java.lang.reflect.Method 类:表示类的方法,可以用来获取类中方法的信息或执行方法。
反射的应用
在 Java 程序中使用反射的基本步骤如下
- 导入java.lang.reflect 包中的相关类。
- 获得需要操作的类的 Class 实例。
- 调用Class 实例的方法获取 Field、Method等实例。
- 使用反射 API操作实例成员。
通过反射来创建 Java 类型的实例有如下两种方式
- 使用 Class 实例的 newinstance()方法创建相关类型的实例。
- 使用 Constructor 实例创建相关类型的实例。
构造方法来创建Java对象的步骤
- 获取与该类型相关的 Class 实例。
- 调用 Class 实例的方法获取表示指定构造方法的 Construetor 实例。
- 调用Constructor 实例的 newinstance()方法来创建相关类型的实例。