Java:Iterator和内部类的对象转义

时间:2012-08-12 19:33:48

标签: java multithreading

我正在读这本书Java Concurrency in Practice第4.2章 - 实例限制中,它表示可以通过发布其他可能间接发布受限对象的迭代器或内部类实例来转义受限对象。 有人可以给出一个例子(代码)吗?

1 个答案:

答案 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的间接引用泄露,即使它是私有的。