Javaの双子委託モデルを破壊する方法は何ですか。

Javaの親子委譲モデルでは、クラスローダーは特定の順序でクラスをロードしようとします。親クラスローダーでクラスが見つからない場合、現在のクラスローダーを使用してロードを試みます。親子委譲モデルを破るには、次のいずれかの方法を使用できます:

  1. クラスをロードします。
public class CustomClassLoader extends ClassLoader {
    @Override
    public Class<?> loadClass(String name) throws ClassNotFoundException {
        if (name.equals("com.example.MyClass")) {
            // 自定义加载MyClass类
            return defineClass(name, null, 0, 0);
        }
        return super.loadClass(name);
    }
}
  1. 現在のスレッドに対して、setContextClassLoader() を呼び出す。
  2. 現在のスレッドにコンテキストクラスローダーを設定します。
Thread.currentThread().setContextClassLoader(new CustomClassLoader());

双親委任モデルを破ると、クラスの読み込みが混乱し、予測不可能な振る舞いが発生する可能性があるため、通常は双親委任モデルを破ることはお勧めできません。クラスの動的更新など特別な要件がある場合にのみ、双親委任モデルを破る必要があるでしょう。

bannerAds