JAVA 26 · 对象实验室

构造器里,时间到底怎么走?

切换场景,再沿八个阶段逐步观察:代码高亮、堆中字段、变量引用和执行记录会同时变化。重点不是背口诀,而是分清“分配对象”“委托构造”和“初始化实例”各发生在哪一刻。

CLASS
LAB

八阶段时间线

阶段 1 / 8

代码切片

Ticket.java

        
阶段 1

此刻的对象

尚未返回引用
调用方变量
t
尚未绑定
新实例 #01
等待分配
执行记录

默认值先于初始化器

刚分配空间时,实例字段先是 0、false 或 null;源码里的字段初始化表达式还没有运行。

this(...) 不复制初始化

委托会沿构造器链到达最终目标;当前类的字段初始化器和实例初始化块在整条链中只运行一次。

Java 26 不是旧口诀

显式 this()/super() 前可有受限 prologue;early construction context 仍限制当前对象的实例访问。

离开时间线前,做两次判断

先选答案,再提交。反馈会解释顺序,不只报对错。

挑战一:Profile() 用 this("游客") 委托给另一个构造器。当前类的实例字段初始化器总共运行几次?

挑战二:在 Java 26 的显式 super(...) 之前,哪段更适合放进受限 prologue?