1.什么是反射
反射是Java语言中一个强大且灵活的特性,允许程序在运行时动态地获取类的信息、创建类的实例、访问类的属性以及调用类的方法。通过反射,Java程序能够在运行时检查或修改类、方法、字段和接口。
反射的核心特点:
- 动态性:可以在运行时动态获取类的信息。
- 灵活性:允许在运行时调用类的方法、访问类的字段。
- 扩展性:可以在不修改源代码的情况下扩展应用程序的功能。
Java反射常用的API:
- Java反射主要通过java.lang.reflect包中的类来实现。常用的反射API包括:
- Class<?>:表示一个类的字节码对象,通过它可以获取类的结构信息。
- Field:表示类的属性,通过它可以访问和修改类的属性值。
常用方法:
- Class.forName(String className):加载指定名称的类并返回对应的Class对象。
- Class.getDeclaredFields():获取类声明的所有属性。
- Class.getDeclaredMethods():获取类声明的所有方法。
- Class.getDeclaredConstructors():获取类声明的所有构造方法。
2.反射的应用 :
在Java程序中使用反射的步骤如下。
- 导入java.lang.reflect包中的相关类。
- 获得需要操作的类的Class实例
- 调用Class实例的方法获取FieId、Method等实例。
- 使用反射APL操作实例成员
获取对应类型基本信息的方法 :
- String getName() 以字符串形式返回该类型的名称
- String getSimpleName() 以字符串形式放回该类型的简称(类名)
- Package getPackage() 获取该类型所有在的包