类加载器、重复的包和类名

3

我正在使用带有Maven的AndroidStudio。我不明白的是,重复的类如何不会混淆类加载器或构建过程。

我制作了自己的android.util.Log类(比如,在我的应用程序中,我创建了一个android.util包,然后在里面创建了自己的Log类),而不是使用标准的Android Log.d,我使用我的自己的。这是如何以及为什么起作用的?

我曾经在某个地方读到过存在3种类加载器——应用程序类加载器、第三方库类加载器和系统类加载器。那么,它们是否按某种优先顺序进行排序,如果您的应用程序类加载器找到了.class文件,那么它就被“链接”了呢?任何其他重复的.class文件都不重要?

为什么这种行为不会导致构建错误/警告呢?

例如,假设我想使用反射来调用我和Android都提供的某个私有类。我希望无论是否调用我的类或Android的类,都不会发生冲突导致崩溃。但我想确切地知道它为什么会以我所看到的方式工作。

1个回答

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接