Java 反射的系统化认知:上帝视角 + 核心四剑客 + 工业防腐
反射就是让你在程序运行时,像做 B 超一样审视甚至修改一个类的内部结构。掌握了四层认知模型,反射不再是死记硬背的 API 调用。 Summary: 反射就是让你在程序运行时,像做 B 超一样审视甚至修改一个类的内部结构。掌握了四层认知模型,反射不再是死记硬背的 API 调用。 普通的编程是作为"局内人",老老实实 new 对象、调方法。反射则是让你拥有 上帝视角 ——在程序运行的时候,去审视甚至动态操控一个类的内部结构。 这套体系看透了,本质上就是三层:先拿到"类的大脑"(Class 对象),再通过四剑客去操控它的构造器、属性和方法,最后时刻警惕反射的两把双刃剑。 第一层:核心心法——什么是"类的大脑" .java 源码编译成 .class 字节码。当 JVM 加载这个文件时,会在堆内存中为它创建一个 独一无二的 Class 对象 。 这个 Class 对象就是该类的"大脑"和"蓝图",它里面记录了这个类有哪些属性、哪些方法、哪些构造器。反射代码编写的唯一核心心法就是: 先拿到这个"大脑"(Class 对象),再通过它去操控一切 。 获取 Class 对象有且仅有三种标准写法(以 User 类为例): // 写法 1:全类名字符串(最常用,多用于配置文件/框架底层) Class<?> clazz1 = Class.forName("com.xyz.model.User"); // 写法 2:类名.class(最直观,常用于方法参数传参) Class<User> clazz2 = User.class; // 写法 3:对象.getClass()(已有实例,想探查其类型) User user = new User(); Class<? extends User> clazz3 = user.getClass(); 第二层:掌控"核心四剑客" 拿到了 Class 对象(大脑)后,反射的所有后续操作,都只在这四个核心类之间打转。它们的编写套路高度一致: 找大脑要器官 → 强行激活权限(如果需要) → 执行动作 。 剑客一:Constructor(...