一、什么是 Java 的反射机制?
反射(Reflection)是 Java 的高级特性之一,是框架实现的基础,定义:Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。
一般而言,当用户使用一个类的时候,应该获取这个类,而后通过这个类实例化对象,但是使用反射则可以相反的通过对象获取类中的信息。
通俗的讲反射就是可以在程序运行的时候动态装载类,查看类的信息,生成对象,或操作生成的对象。它允许运行中的 Java 程序获取自身的信息,自己能看到自己,就像照镜子一样。
二、Java 反射机制常见方法介绍
1. Java 反射实现的关键点之 Class(字节码文件对象)
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。JVM 中有 N 多的实例,每个类的实例都有 Class 对象。(包括基本数据类型)
Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。也就是这不需要我们自己去处理创建,JVM 已经帮我们创建好了。
如果知道一个实例,那么可以通过实例的“getClass()”方法获得运行实例的 Class(该类型的字节码文件对象),如果你知道一个类型,那么你也可以使用“.class”的方法获得运行实例的 Class。
方法 2~17 都是类 Class 的方法。
java.lang.Class 继承自 java.lang.Object。
2. getName() 方法
String getName() ;返回此 Member 表示的底层成员或构造方法的简单名称。
3. forName() 方法
public static Class <?> forName(String className)
throws ClassNotFoundException
返回与带有给定字符串名的类或接口相关联的 Class 对象。
参数:className - 所需类的完全限定名
4. getSuperclass() 方法
public Class<? super T> getSuperclass()
返回:此对象所表示的类的超类。
5. getInterfaces() 方法
public Class< ? >[] getInterfaces()
返回:该类所实现的接口的一个数组