这是对最有力论点的总结,以支持这样的论点:当前的定值分配规则必须在不破坏一致性的前提下放宽(A),然后再提出我的反驳(B):
答 :在字节码级别,对变量的写入不是try块中的最后一条指令:例如,最后一条指令通常是
goto
对异常处理代码的跳转;乙 :但是,如果规则状态
i
是 绝对未分配 的捕捉块内,它的值可以不被观察到。不可观察的价值与没有价值一样好。答 :即使编译器声明
i
为 绝对未分配 ,调试工具仍然可以看到该值;B :实际上,调试工具始终可以访问未初始化的局部变量,该变量在典型的实现中将具有任意值。未初始化的变量和在实际写入发生后突然完成初始化的变量之间没有本质区别。不管此处考虑的特殊情况如何,该工具都必须始终使用其他元数据来为每个局部变量知道 明确分配 该变量的指令范围,并且仅允许在执行发现自身处于该范围内时观察其值。
定论:
该规范可以持续接收更多细粒度的规则,这些规则可以使我发布的示例得以编译。



