1

私は本を​​読んでいJava Concurrency in Practiceます。Chapter 4.2 -インスタンスの制限では、制限されたオブジェクトは、制限されたオブジェクトを間接的に公開する可能性のある反復子や内部クラス インスタンスなどの他のものを公開することによっても回避できると述べています
。 誰かがそれぞれの例(コード)を教えてください。

4

1 に答える 1

3

確かに、ここに 2 つの例があります。
イテレータ:

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 に答える