私のワークスペースには、Android lib プロジェクトである A、B、および C の 3 つのプロジェクトがあります。
- A にはという名前のアクティビティが含まれています
Atest
- B には、
Btest
interface を実装するという名前のクラスが含まれています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
。この場合、別の理由はないと思います。