0

我编写了一个简单的 android 应用程序,我创建了一个扩展 apache 的 HttpClient 接口的接口 (MyHttpClient),并创建了一个名为 MyHttpClientImpl 的实现类。在构建我的项目时,我使用 proguard 对我的 apk 进行了混淆,我注意到在优化过程中,接口 MyHttpClient 已从 apk 中删除。如果没有物理类 MyHttpClient,应用程序如何工作(它仍然工作)?它怎么知道 MyHttpClientImpl 正在扩展/实现 apache 的 HttpClient(如果有的话,这个连接存储在哪里)?谢谢。

4

2 回答 2

2

ProGuard 的优化步骤可以将接口与其唯一的实现类合并。生成的类仍应实现其所有其他接口,在本例中为 HttpClient。您可以通过使用 javap 查看生成的类来检查这一点:

javap -classpath processed.jar mypackage.MyHttpClient
于 2013-11-05T01:29:18.847 回答
0

因为java中的接口在执行时不检查,只在编译时检查。例外是当您使用反射时,您不想删除接口。

于 2013-11-03T10:24:13.370 回答