Java对象安全初始化与灵活调度无关的信息安全
1 Java对象安全初始化
1.1 类型系统基础
在Java中,为了确保对象的安全初始化,提出了一种模块化类型系统。该系统有几个重要定义:
- 每个类 c 的默认构造函数 c.init 是唯一的。
- 类型系统依赖于良构状态的辅助概念,它捕获了类型系统强制执行的语义约束。一个状态 <m, i, ρ, σ, cs> 是良构的(wf),需存在一个类型注解 Lp ∈(Meth × L) →(Var →Type) ,满足以下条件:
- 堆的良构性(wf. heap) : ∀l ∈L, ∀o ∈O, σ(l) = o ⇒σ ⊢o(f) : (p.fields f)
- 局部变量的良构性(wf. local variables) : ∀x ∈Var, σ ⊢ρ(x) : Lp[m, i](x)
- 调用栈的良构性(wf. call stack) : ∀(m′, i′, ρ′, r) ∈cs, ∀x, σ ⊢ρ′(x) : Lp[m′, i′](x)
基于这些条件,可以建立两个关键定理:
- 保存性(Preservation) :从良构状态的任何有效转换都会导致另一个良构状态。
- 进展性
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



