2011-08-02 123 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