2011-08-02 80 views
0

我試過教程here中描述的一些東西:調查​​一個類的方法。但是當我試圖調查android.content.SharedPreferences.Editor的方法時,我得到了一個ClassNotFoundException,因爲Editor實際上是一個接口,而不是一個類。那麼,如何使用Java反射訪問接口的方法?提前致謝。Android中的Java反射:接口

這裏是代碼:

String sClassName = "android.content.SharedPreferences.Editor"; 
try { 
    Class classToInvestigate = Class.forName(sClassName); 

    // Dynamically do stuff with this class 
    // List constructors, fields, methods, etc. 

} catch (ClassNotFoundException e) { 
    // Class not found! 
} catch (Exception e) { 
    // Unknown exception 
} 
+1

告訴我們你要使用的代碼? – Bozho

+0

你可以嘗試'Class classToInvestigate = Editor.class;'?也許不直接引用該類會使其無法用於您的項目。我不知道Android如何編譯代碼打包工程... – helios

回答

0

你應該能夠探索以同樣的方式的界面,你會使用反射探索類。唯一的區別在於isInterface將返回true這一事實。

你能發佈一些代碼,如果你在你的程序中使用JDK或Android SDK爲可以解釋爲什麼你會得到一個ClassNotFoundException請準確。

問候, 斯特凡

+0

感謝您的回答!我使用代碼編輯了我的帖子。 – Egor

+0

而你使用android sdk或java sdk運行這個嗎?它應該被發現使用android,並且不會使用java sdk找到,因爲這個類是android的一部分。 – Snicolas

0

嘗試下面的類名,

android.app.ContextImpl $ SharedPreferencesImpl $ EditorImpl