2016-08-01 17 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