2016-10-30 9 views
1

Javaには3種類のローダーがあり、3つの異なる名前空間を持つことになります。 1つの名前空間に存在するクラスは、セキュリティ上の理由から他の名前空間に存在するクラスを見ることができません。私のアプリケーションクラスローダーは私のアプリケーションクラスをロードし、クラスがStringクラスを使用している場合は、Stringクラスがブートストラップローダーによってロードされているので、可視性がどのように提供されます。名前空間とClassLoaderサブシステムのVisibilty

答えて

0

私は、 'ChildClassLoader'は、指定されたクラスが既にロードされている場合、その 'ParentClassLoader'(この場合はブートストラップClassLoader)を常にチェックすると信じています。したがって 'String'クラス(この場合)はすべての 'ClassLoaders'で同じになります。

クラスオブジェクトが 'ParentClassLoader'で共有されていない場合、 'ClassLoader'ごとに異なるため、すべての 'ClassLoader'に対してその特定クラスの 'hashcode'を出力するだけです。