概念
发布(publishing):
发布一个对象的意思是使它能够被当前范围之外的代码所使用。比如将一个引用存储到其他代码可以访问的地方,在一个非私有的方法中返回这个引用,也可以把它传递到其他类的方法中。
逸出(escape):
一个对象在尚未准备好时就将它发布,这种情况称作逸出。
逸出的方式
上边关于逸出的概念讲述的很是模糊,下面列举几个逸出的示例。
第一,通过静态变量引用逸出
public static Set<Secret> knownSecrets;
public void initialize() {
knowsSecrets = new HashSet<Secret>();
}
上边代码示例中,调用initialize方法,发布了knowSecrets对象。当你向knowSecrets中添加一个Secret时,会同时将Secret对象发布出去,原因是可以通过遍历knowSecrets获取到Secret对象的引用,然后进行修改。
<