1

我正在看书Java Concurrency in Practice
第 4.2 章-实例限制中,它说受限对象也可以通过发布可能间接发布受限对象的迭代器或内部类实例等其他对象来逃脱。
有人可以举一个例子(代码)吗?

4

1 回答 1

3

当然,这里有两个例子。
迭代器:

public class NonSafe {
    private List x;

    public Iterator getIterator() {
        return x.iterator();
    }
}

即使是私有的,您仍然可以对其x执行操作,例如,修改. delete()Iteratorx

内部类:

public class Outer {
    private Object x;

    class Inner {
        public Object lookAtOuter() {
            return Outer.this.x;
        }
    }
}

在这里,对 , 的转义引用Inner会导致对 的间接引用x泄漏,即使它是私有的。

于 2012-08-12T19:41:46.457 回答