一、反射
1. 什么是Java反射?
Java反射(Reflection)是Java语言提供的一种运行时自省(introspection)机制,允许程序在运行时动态地获取类的信息、创建对象、调用方法、访问字段等,而无需在编译期知道具体的类名或方法签名。
想象你有一台神奇的"代码透视仪",可以让你在程序运行时看透类的内部结构,就像医生用X光看人体内部一样。不需要在写代码时就知道具体类的结构,运行时也能"看到"并操作它。
简单说:反射就是让Java程序在运行时"自省",了解自己的结构,并能动态操作自己的内部。
相当于再说
一个类的里面,经常使用的无非不就是,成员变量、成员方法、构造方法。那么反射就可以理解为一个人,这个人可以把成员变量、构造方法、成员方法全部都获取出来,并对它们进行操作。有什么用呢?
如:IDEA里面的自动提醒功能,调用方法的形参的自动显示
2. 反射的优缺点:用得好是神器,用不好是炸弹
✅ 优点
- 高灵活性:运行时动态加载类,无需提前硬编码
- 低耦合:降低模块间的依赖,提高可维护性
- 扩展性强:通过配置文件实现功能扩展(如Spring的Bean配置)
❌ 缺点
- 性能损耗:反射操作比直接调用慢10-100倍(因为涉及动态解析和类型检查)
- 安全性问题:可以绕过访问控制(如访问private字段)
- 代码可读性差:使用反射的代码通常更难理解和维护
重要提示:在性能敏感的场景(如高频交易系统)中,应避免过度使用反射。