我在android中看到类加载器的加载类,我有一个问题。如何在这个过程中识别同一个班级。我google的classloader的原理和找人说:如何在android中识别相同的类?
如果一个类有相同的类名,并具有相同的类加载器,这是一个相同的类。但我使用android studio,我定义了一个名为的视图,我在其他类中使用它,我发现有两个类提示。一个是我的定义,另一个是系统类。
但基于父母模式类加载器,有正确的方式的系统类,如何理解它?
我很怀疑!
我在android中看到类加载器的加载类,我有一个问题。如何在这个过程中识别同一个班级。我google的classloader的原理和找人说:如何在android中识别相同的类?
如果一个类有相同的类名,并具有相同的类加载器,这是一个相同的类。但我使用android studio,我定义了一个名为的视图,我在其他类中使用它,我发现有两个类提示。一个是我的定义,另一个是系统类。
但基于父母模式类加载器,有正确的方式的系统类,如何理解它?
我很怀疑!
但我使用Android [...],我定义了一个名为“视图”的类,我在其他类中使用它,我发现在提示中有两个类。一个是[我的],另一个是系统类。
如果我理解正确的话,类加载器做正确的工作和负荷都com.your.package.View
和android.view.View
。您可以使用import
声明选择View
简单地引用哪一个,否则您需要完全限定名称,例如我刚刚描述的两个类。
在纯Java一样的,如果你写一个String
类重叠java.lang.String
如果在com.your.package中有相同的名称类以及如何处理?先看看哪一个加载? –
你不应该能够在同一个软件包中创建两个同名的类。你会看到一个编译错误。 –
该问题的一般解决方案是让您的类名称自描述并且不与系统类重叠(如果可以的话)。 –
您需要使用上下文变量来使用这个
Context context = MainActivity.this;
,并获得类名使用此
MainActivity.this.getClass().getSimpleName();
上下文变量为什么?需要什么活动名称? –
这只是错误的。 – Shark
是一个Java问题或Android的工作室? – agilob
在编译期间只有程序包和类名称数。类加载器在运行时发挥作用。 – Henry
@agilob这是一个java问题也许,我不知道 –