2016-08-01 33 views
0

我在android中看到类加载器的加载类,我有一个问题。如何在这个过程中识别同一个班级。我google的classloader的原理和找人说:如何在android中识别相同的类?

如果一个类有相同的类名,并具有相同的类加载器,这是一个相同的类。但我使用android studio,我定义了一个名为的视图,我在其他类中使用它,我发现有两个类提示。一个是我的定义,另一个是系统类。

但基于父母模式类加载器,有正确的方式的系统类,如何理解它?

我很怀疑!

+0

是一个Java问题或Android的工作室? – agilob

+1

在编译期间只有程序包和类名称数。类加载器在运行时发挥作用。 – Henry

+0

@agilob这是一个java问题也许,我不知道 –

回答

1

但我使用Android [...],我定义了一个名为“视图”的类,我在其他类中使用它,我发现在提示中有两个类。一个是[我的],另一个是系统类。

如果我理解正确的话,类加载器做正确的工作和负荷都com.your.package.Viewandroid.view.View。您可以使用import声明选择View简单地引用哪一个,否则您需要完全限定名称,例如我刚刚描述的两个类。

在纯Java一样的,如果你写一个String类重叠java.lang.String

+0

如果在com.your.package中有相同的名称类以及如何处理?先看看哪一个加载? –

+0

你不应该能够在同一个软件包中创建两个同名的类。你会看到一个编译错误。 –

+0

该问题的一般解决方案是让您的类名称自描述并且不与系统类重叠(如果可以的话)。 –

-2

您需要使用上下文变量来使用这个

Context context = MainActivity.this; 

,并获得类名使用此

MainActivity.this.getClass().getSimpleName(); 
+0

上下文变量为什么?需要什么活动名称? –

+2

这只是错误的。 – Shark

相关问题