私は本を読んでいJava Concurrency in Practice
ます。Chapter 4.2 -インスタンスの制限では、制限されたオブジェクトは、制限されたオブジェクトを間接的に公開する可能性のある反復子や内部クラス インスタンスなどの他のものを公開することによっても回避できると述べています
。
誰かがそれぞれの例(コード)を教えてください。
1 に答える
3
確かに、ここに 2 つの例があります。
イテレータ:
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
于 2012-08-12T19:41:46.457 に答える