Java 基础专题覆盖语法、面向对象、泛型、反射、代理与序列化等内容。它的价值不在单个语法点,而在于这些机制是集合、并发、JVM 乃至 Spring 框架的共同前置——学完的标准是能解释框架的「魔法」,而不只是会调 API。

模块包含哪些主题

按解决的问题划分,本专题可分为四组:

分组 主要主题 解决什么问题
语言底座 基本语法、面向对象、异常、常用类、关键字 建立写 Java 的基本功和对象模型直觉
参数与类型语义 值传递、equals/hashCode、对象可变性 解释「方法调用后对象状态为何改变」这类高频误解
编译期类型系统 泛型、通配符、类型擦除、语法糖 分清编译器检查了什么、运行期又擦掉了什么
运行时机制 反射、动态代理、SPI、序列化、Unsafe 看懂框架如何在运行时装配、拦截和扩展对象

BigDecimal 与金额计算属于工程细节补丁,相对独立,可在任意阶段按项目需要插入。

主题之间的依赖

语言底座是一切的前提:不理解类与继承,泛型的边界和反射的 Class 模型都无从谈起。值传递与 equals/hashCode 是集合模块的直接前置——HashMap 的键定位正建立在 hashCode 约定之上。泛型擦除决定了运行时拿不到 List<String> 的元素类型,这个缺口正是反射和序列化框架必须绕开的约束。反射再往上一步是动态代理与 SPI:Spring 的依赖注入、AOP 和自动配置,本质上都是这三者的组合应用。

推荐学习顺序

  1. 先过语法、面向对象、异常和常用类,做到能独立写出结构清晰的小程序。
  2. 专项厘清值传递与 equals/hashCode,用可运行的小实验推翻直觉错误。
  3. 学泛型与通配符,重点理解上下界语义和擦除带来的运行期限制。
  4. 进入反射、JDK/CGLIB 代理、SPI 与序列化,最终能说明 @Autowired 为何离不开反射、MyBatis 的 Mapper 接口为何需要代理。
  5. 按项目需要补 BigDecimal、Unsafe、语法糖等细节,不必强求一次学全。

学完的判据

  • 能讲清「Java 只有值传递」在对象参数场景下的真实含义。
  • 能说清擦除之后运行时的类型信息去了哪里,以及序列化框架如何绕过这一限制。
  • 读框架源码时能把「魔法」追回到 Class、Method、Proxy 或 META-INF/services,而不是停留在 API 调用层面。

达到这三条,就拿到了进入集合、并发与框架源码阅读的门票。