Java 基础专题:语法、面向对象、泛型、反射、代理与序列化
Java 基础专题覆盖语法、面向对象、泛型、反射、代理与序列化等内容。它的价值不在单个语法点,而在于这些机制是集合、并发、JVM 乃至 Spring 框架的共同前置——学完的标准是能解释框架的「魔法」,而不只是会调 API。
模块包含哪些主题
按解决的问题划分,本专题可分为四组:
| 分组 | 主要主题 | 解决什么问题 |
|---|---|---|
| 语言底座 | 基本语法、面向对象、异常、常用类、关键字 | 建立写 Java 的基本功和对象模型直觉 |
| 参数与类型语义 | 值传递、equals/hashCode、对象可变性 |
解释「方法调用后对象状态为何改变」这类高频误解 |
| 编译期类型系统 | 泛型、通配符、类型擦除、语法糖 | 分清编译器检查了什么、运行期又擦掉了什么 |
| 运行时机制 | 反射、动态代理、SPI、序列化、Unsafe | 看懂框架如何在运行时装配、拦截和扩展对象 |
BigDecimal 与金额计算属于工程细节补丁,相对独立,可在任意阶段按项目需要插入。
主题之间的依赖
语言底座是一切的前提:不理解类与继承,泛型的边界和反射的 Class 模型都无从谈起。值传递与 equals/hashCode 是集合模块的直接前置——HashMap 的键定位正建立在 hashCode 约定之上。泛型擦除决定了运行时拿不到 List<String> 的元素类型,这个缺口正是反射和序列化框架必须绕开的约束。反射再往上一步是动态代理与 SPI:Spring 的依赖注入、AOP 和自动配置,本质上都是这三者的组合应用。
推荐学习顺序
- 先过语法、面向对象、异常和常用类,做到能独立写出结构清晰的小程序。
- 专项厘清值传递与
equals/hashCode,用可运行的小实验推翻直觉错误。 - 学泛型与通配符,重点理解上下界语义和擦除带来的运行期限制。
- 进入反射、JDK/CGLIB 代理、SPI 与序列化,最终能说明
@Autowired为何离不开反射、MyBatis 的 Mapper 接口为何需要代理。 - 按项目需要补 BigDecimal、Unsafe、语法糖等细节,不必强求一次学全。
学完的判据
- 能讲清「Java 只有值传递」在对象参数场景下的真实含义。
- 能说清擦除之后运行时的类型信息去了哪里,以及序列化框架如何绕过这一限制。
- 读框架源码时能把「魔法」追回到 Class、Method、Proxy 或
META-INF/services,而不是停留在 API 调用层面。
达到这三条,就拿到了进入集合、并发与框架源码阅读的门票。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Dai Wei!
评论

