我正在读这本书Java Concurrency in Practice
在第4.2章 - 实例限制中,它表示可以通过发布其他可能间接发布受限对象的迭代器或内部类实例来转义受限对象。
有人可以给出一个例子(代码)吗?
答案 0 :(得分:3)
当然,这里有两个例子 迭代器:
public class NonSafe {
private List x;
public Iterator getIterator() {
return x.iterator();
}
}
即使x
是私有的,您仍然可以在delete()
上执行操作,例如Iterator
,修改x
。
内部课程:
public class Outer {
private Object x;
class Inner {
public Object lookAtOuter() {
return Outer.this.x;
}
}
}
此处,对Inner
的转义引用会导致对x
的间接引用泄露,即使它是私有的。