public class OverridingClassLoader extends DecoratingClassLoader
ClassLoader。これにより、たとえば、オーバーライド ClassLoader でインスツルメンテーションを強制したり、特定の親でインストルメントされたバージョンのクラスを最終的にロードする前に、イントロスペクションの目的で選択されたアプリケーションクラスをオーバーライド ClassLoader に一時的にロードする「スローアウェイ」クラスロード動作を強制できます。ClassLoader。| 修飾子と型 | フィールドと説明 |
|---|---|
static StringSE[] | DEFAULT_EXCLUDED_PACKAGES デフォルトで除外されるパッケージ |
| コンストラクターと説明 |
|---|
OverridingClassLoader(ClassLoaderSE parent) 指定された ClassLoader の新しい OverridingClassLoader を作成します。 |
OverridingClassLoader(ClassLoaderSE parent, ClassLoaderSE overrideDelegate) 指定された ClassLoader の新しい OverridingClassLoader を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected boolean | isEligibleForOverriding(StringSE className) 指定されたクラスがこのクラスローダーによるオーバーライドに適格かどうかを判断します。 |
protected byte[] | loadBytesForClass(StringSE name) 指定されたクラスの定義バイトをロードし、 ClassLoader.defineClass(byte[], int, int)SE 呼び出しを通じて Class オブジェクトに変換します。 |
ClassSE<?> | loadClass(StringSE name) |
protected ClassSE<?> | loadClass(StringSE name, boolean resolve) |
protected ClassSE<?> | loadClassForOverriding(StringSE name) この ClassLoader でオーバーライドするために、指定されたクラスをロードします。 |
protected InputStreamSE | openStreamForClass(StringSE name) 指定されたクラスの InputStream を開きます。 |
protected byte[] | transformIfNecessary(StringSE name, byte[] bytes) サブクラスによって実装される変換フック。 |
excludeClass, excludePackage, isExcludedclearAssertionStatusSE, defineClassSE, defineClassSE, defineClassSE, defineClassSE, definePackageSE, findClassSE, findLibrarySE, findLoadedClassSE, findResourceSE, findResourcesSE, findSystemClassSE, getClassLoadingLockSE, getPackageSE, getPackagesSE, getParentSE, getResourceSE, getResourceAsStreamSE, getResourcesSE, getSystemClassLoaderSE, getSystemResourceSE, getSystemResourceAsStreamSE, getSystemResourcesSE, registerAsParallelCapableSE, resolveClassSE, setClassAssertionStatusSE, setDefaultAssertionStatusSE, setPackageAssertionStatusSE, setSignersSEcloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSEpublic static final StringSE[] DEFAULT_EXCLUDED_PACKAGES
public OverridingClassLoader(@Nullable ClassLoaderSE parent)
parent - ClassLoader をオーバーライドする ClassLoader を構築する public OverridingClassLoader(@Nullable ClassLoaderSE parent, @Nullable ClassLoaderSE overrideDelegate)
parent - ClassLoader をオーバーライドする ClassLoader を構築する overrideDelegate - オーバーライドするために委譲する ClassLoaderpublic ClassSE<?> loadClass(StringSE name) throws ClassNotFoundExceptionSE
ClassLoaderSE の loadClassSE ClassNotFoundExceptionSEprotected ClassSE<?> loadClass(StringSE name, boolean resolve) throws ClassNotFoundExceptionSE
ClassLoaderSE の loadClassSE ClassNotFoundExceptionSEprotected boolean isEligibleForOverriding(StringSE className)
className - チェックするクラス名 DecoratingClassLoader.isExcluded(java.lang.String)@Nullable protected ClassSE<?> loadClassForOverriding(StringSE name) throws ClassNotFoundExceptionSE
デフォルトの実装では、ClassLoader.findLoadedClass(java.lang.String)SE、loadBytesForClass(java.lang.String) および ClassLoader.defineClass(byte[], int, int)SE に委譲されます。
name - クラスの名前 null ClassNotFoundExceptionSE - 指定された名前のクラスをロードできなかった場合 @Nullable protected byte[] loadBytesForClass(StringSE name) throws ClassNotFoundExceptionSE
ClassLoader.defineClass(byte[], int, int)SE 呼び出しを通じて Class オブジェクトに変換します。 デフォルトの実装は openStreamForClass(java.lang.String) および transformIfNecessary(java.lang.String, byte[]) に委譲します。
name - クラスの名前 null ClassNotFoundExceptionSE - 指定された名前のクラスをロードできなかった場合 @Nullable protected InputStreamSE openStreamForClass(StringSE name)
デフォルトの実装は、親 ClassLoader の getResourceAsStream メソッドを介して標準クラスファイルをロードします。
name - クラスの名前 protected byte[] transformIfNecessary(StringSE name, byte[] bytes)
デフォルトの実装では、指定されたバイトがそのまま返されます。
name - 変換されるクラスの完全修飾名 bytes - クラスの生のバイト null になることはありません。変換によって変更が生じなかった場合、入力バイトと同じ)