public class OverridingClassLoader extends DecoratingClassLoader
ClassLoader。これにより、たとえば、オーバーライド ClassLoader でインスツルメンテーションを強制したり、特定の親でインストルメントされたバージョンのクラスを最終的にロードする前に、イントロスペクションの目的で選択されたアプリケーションクラスをオーバーライド ClassLoader に一時的にロードする「スローアウェイ」クラスロード動作を強制できます。ClassLoader。| 修飾子と型 | フィールドと説明 |
|---|---|
static java.lang.String[] | DEFAULT_EXCLUDED_PACKAGES デフォルトで除外されるパッケージ |
| コンストラクターと説明 |
|---|
OverridingClassLoader(java.lang.ClassLoader parent) 指定された ClassLoader の新しい OverridingClassLoader を作成します。 |
OverridingClassLoader(java.lang.ClassLoader parent, java.lang.ClassLoader overrideDelegate) 指定された ClassLoader の新しい OverridingClassLoader を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected boolean | isEligibleForOverriding(java.lang.String className) 指定されたクラスがこのクラスローダーによるオーバーライドに適格かどうかを判断します。 |
protected byte[] | loadBytesForClass(java.lang.String name) 指定されたクラスの定義バイトをロードし、 ClassLoader.defineClass(byte[], int, int) 呼び出しを通じて Class オブジェクトに変換します。 |
java.lang.Class<?> | loadClass(java.lang.String name) |
protected java.lang.Class<?> | loadClass(java.lang.String name, boolean resolve) |
protected java.lang.Class<?> | loadClassForOverriding(java.lang.String name) この ClassLoader でオーバーライドするために、指定されたクラスをロードします。 |
protected java.io.InputStream | openStreamForClass(java.lang.String name) 指定されたクラスの InputStream を開きます。 |
protected byte[] | transformIfNecessary(java.lang.String name, byte[] bytes) サブクラスによって実装される変換フック。 |
excludeClass, excludePackage, isExcludedclearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSignerspublic static final java.lang.String[] DEFAULT_EXCLUDED_PACKAGES
public OverridingClassLoader(@Nullable java.lang.ClassLoader parent)
parent - ClassLoader をオーバーライドする ClassLoader を構築する public OverridingClassLoader(@Nullable java.lang.ClassLoader parent, @Nullable java.lang.ClassLoader overrideDelegate)
parent - ClassLoader をオーバーライドする ClassLoader を構築する overrideDelegate - オーバーライドするために委譲する ClassLoaderpublic java.lang.Class<?> loadClass(java.lang.String name)
throws java.lang.ClassNotFoundExceptionjava.lang.ClassLoader の loadClass java.lang.ClassNotFoundExceptionprotected java.lang.Class<?> loadClass(java.lang.String name,
boolean resolve)
throws java.lang.ClassNotFoundExceptionjava.lang.ClassLoader の loadClass java.lang.ClassNotFoundExceptionprotected boolean isEligibleForOverriding(java.lang.String className)
className - チェックするクラス名 DecoratingClassLoader.isExcluded(java.lang.String)@Nullable protected java.lang.Class<?> loadClassForOverriding(java.lang.String name) throws java.lang.ClassNotFoundException
デフォルトの実装は、ClassLoader.findLoadedClass(java.lang.String)、loadBytesForClass(java.lang.String)、ClassLoader.defineClass(byte[], int, int) に委譲します。
name - クラスの名前 null java.lang.ClassNotFoundException - 指定された名前のクラスをロードできなかった場合 @Nullable protected byte[] loadBytesForClass(java.lang.String name) throws java.lang.ClassNotFoundException
ClassLoader.defineClass(byte[], int, int) 呼び出しを通じて Class オブジェクトに変換します。 デフォルトの実装は openStreamForClass(java.lang.String) および transformIfNecessary(java.lang.String, byte[]) に委譲します。
name - クラスの名前 null java.lang.ClassNotFoundException - 指定された名前のクラスをロードできなかった場合 @Nullable protected java.io.InputStream openStreamForClass(java.lang.String name)
デフォルトの実装は、親 ClassLoader の getResourceAsStream メソッドを介して標準クラスファイルをロードします。
name - クラスの名前 protected byte[] transformIfNecessary(java.lang.String name,
byte[] bytes)デフォルトの実装では、指定されたバイトがそのまま返されます。
name - 変換されるクラスの完全修飾名 bytes - クラスの生のバイト null になることはありません。変換によって変更が生じなかった場合、入力バイトと同じ)