我的工作区中有 3 个项目 - A、B 和 C,这是一个 Android lib 项目。
- A 包含一个名为
Atest
- B 包含一个名为
Btest
实现接口的类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
提前致谢!
附言
请注意,我将其转换为接口,而不是对象,所以我猜ClassLoader
在这种情况下,不同不是原因。