介绍
反射指的是可以于运行时加载、探知和使用编译期间完全未知的类
程序在运行状态中, 可以动态加载一个只有名称的类, 对于任意一个已经加载的类, 都能够
知道这个类的所有属性和方法; 对于任意一个对象, 都能调用他的任意一个方法和属性;
加载完类之后, 在堆内存中会产生一个 Class 类型的对象(一个类只有一个 Class 对象), 这个
对象包含了完整的类的结构信息, 而且这个 Class 对象就像一面镜子, 透过这个镜子看到类
的结构, 所以被称之为反射
每个类被加载进入内存之后, 系统就会为该类生成一个对应的 java.lang.Class 对象, 通过
该 Class 对象就可以访问到 JVM 中这个类的数据
Class 对象获取
- 实例对象的 getClass 方法
- 类的 class 属性(最安全/性能最好)
- 运用
Class.forName(String className)
动态加载类, className 需要是类的全限定名
(最常用)
使用功能 .class
来创建 Class 对象的引用时, 不会自动初始化该 Class 对象, 使
用 forName()
会自动初始化该 Class 对象
示例代码