我正在编写一个Android项目,该项目需要使用该项目的4.1版中的Apache HttpClient。我将其作为jar文件包含在项目的libs文件夹中。我的问题是,类加载器如何知道使用版本4类而不是平台提供的版本3,因为它们都具有相同的程序包名称和相同的import语句?
我过去使用GSON库时遇到一个问题,该库与HTC see here包含的库发生冲突,想知道这些情况有何不同(也许是因为gson在使用反射?)?任何信息将非常感谢。
最佳答案
类加载器首先查看其类,然后再询问父类加载器。
问题可能是父类加载器有一个可在android中工作的修补类,而您提供的版本却没有。这可能会导致问题。
长话短说:
类加载器存储在树中,当找不到类时,将询问父类加载器。
(自定义类加载器可能会有所不同!)
关于java - 类加载器如何在具有相同包和名称的多个类之间进行选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6612038/