私のワークスペースには、Android lib プロジェクトである A、B、および C の 3 つのプロジェクトがあります。
- A にはという名前のアクティビティが含まれています
Atest - B には、
Btestinterface を実装するという名前のクラスが含まれていますI。 - C には
Iインターフェイスが含まれます。
A と B の両方が Android デバイスにインストールされています。実行時に、次Atestのコードを実行しています:
Context otherContext = createPackageContext("com.package.b",
CONTEXT_INCLUDE_CODE | CONTEXT_IGNORE_SECURITY);
ClassLoader loader = otherContext.getClassLoader();
Class<?> btest = Class.forName("com.package.b.BTest", true, loader);
ここに私の質問があります-btestを実行コンテキストI内にキャストする方法はありますか?A
私は多くの明白な(そしていくつかのそれほど明白ではない)トリックを試しましたが、何もうまくいきませんでした. もちろん、btest のメソッドとインターフェイスを調べたり、そのメソッドを呼び出したりすることはできますが、A と B の両方が lib-project C でIまったく同じインターフェイスを参照しているにもかかわらず、単に にキャストすることはできません。I
前もって感謝します!
PS
オブジェクトではなくインターフェイスにキャストしていることに注意してくださいClassLoader。この場合、別の理由はないと思います。