文章目录
📚 前言
Reflection(反射) 是 Java 被视为动态语言的关键。反射机制允许程序在执行期借助于 Reflection API 取得任何类的内部信息(类名,方法,接口),并能直接操作任意对象的内部属性及方法。
🔍 一、反射机制核心概念
1️⃣ Class对象:反射的基石
- 加载完类之后,在堆内存的方法区中就产生了一个
Class
类型的对象。 - 一个类在内存中只有一个
Class
对象。 - 这个
Class
对象包含了完整的类的结构信息(就像一面镜子)。 - 透过这面“镜子”(
Class
对象)可以看到类的结构(属性、方法、构造器、实现的接口等)。 Class
是一个类,class
是一个关键字(描述类的类)。
2️⃣ 创建对象的五种方式
new
newInstance()
clone()
- 反序列化
- 反射
3️⃣ 动态语言特性
- 反射使得 Java 具备一定的动态性:程序可以在运行时根据某些条件改变自身结构。
4️⃣ 实体类
- POJO (Plain Old Java Object)
- Entity
🧩 二、深入 Class 类
1️⃣ 获取 Class 对象的几种方式
- 对于每个类而言,JRE 都为其保留一个不变的
Class
类型的对象。 - 一个
Class
对象包含了特定某个结构(class
/interface
/enum
/annotation
/primitive type
/void
)的有关信息。 Class
本身也是一个类。Class
对象只能由系统建立对象。- 一个加载的类在 JVM 中只会有一个
Class
实例。 - 一个
Class
对象对应的是一个加载到 JVM 中的一个.class
文件。 - 每个类的实例都会记得自己是由哪个
Class
实例所生成。 - 通过
Class
可以完整地得到一个类中的所有被加载的结构。 Class
类是 Reflection 的根源。针对任何你想动态加载、运行的类,必须先获得相应的Class
对象。
2️⃣ Class 类的常用方法
- 基本内置类型包装类都有一个对应的
Class
对象。 - Spring 框架通过反射创建对象。
3️⃣ 所有类型的 Class 对象
🧾 总结
反射机制的核心在于
Class
对象,它提供了在运行时探查和操作类结构的能力,是 Java 实现动态特性的关键。理解 类加载过程 和Class
对象的唯一性 对于掌握反射至关重要。
🎉 如果我的内容对你有帮助,请点赞👍、关注❤️、收藏⭐️。创作不易,大家的支持就是我坚持下去的动力!