4

Android 2.2 SDK を使用していますが、MultiUserChat クラス内の静的ブロックを実行できませんでした。私はそれを強制的にロードしようとしました

try 
{
    String qual = MultiUserChat.class.getName();
    ClassLoader.getSystemClassLoader().loadClass(qual);
        
} catch (ClassNotFoundException e) {

    e.printStackTrace();
}

そしてそれは常にcatchブロックに当たります。「qual」はクラスの有効な名前を取得します...それは何でしょうか?

4

1 に答える 1

9

アプリには、ArrayList や Activity などのフレームワーク クラスと、FlashlightActivity などのアプリケーション クラスの両方が含まれます。フレームワーク クラスは、システムクラス ローダー (およびブートストラップ クラス loadeR)によってロードされます。アプリケーション クラスは、アプリケーションクラス ローダーによってロードされます。

システム クラス ローダーは、システム クラスのみを認識できます。アプリケーション クラス パスがわからず、アプリケーション クラスのロードに使用できません。これを行うには、アプリケーション クラス ローダーを使用する必要があります。アプリケーション クラス ローダーへの参照を取得する最も簡単な方法は、アプリケーション クラスを使用することです。

try {
    String qual = MultiUserChat.class.getName();
    MyActivity.class.getClassLoader().loadClass(qual);
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
于 2012-01-15T14:11:23.130 に答える