【问题标题】:Java reflection in Android: interfacesAndroid 中的 Java 反射:接口
【发布时间】:2011-10-18 03:31:07
【问题描述】:

我已经尝试了教程here 中描述的一些事情:调查类的方法。但是当我试图调查android.content.SharedPreferences.Editor 的方法时,我得到了ClassNotFoundException,因为Editor 实际上是一个接口,而不是一个类。那么,如何使用 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  
}  

【问题讨论】:

  • 向我们展示您尝试使用的代码?
  • 你能试试Class classToInvestigate = Editor.class;吗?也许不直接引用该类会使其对您的项目不可用。不知道Android编译后的代码打包是怎么工作的……

标签: java android class reflection interface


【解决方案1】:

试试下面的类名,

android.app.ContextImpl$SharedPreferencesImpl$EditorImpl

【讨论】:

    【解决方案2】:

    您应该能够像使用反射探索类一样探索接口。唯一的区别在于 isInterface 将返回 true。

    您能否发布一些代码并请准确说明您在程序中使用的是 JDK 还是 Android SDK,因为 this 可以解释为什么您会收到 ClassNotFoundException。

    问候, 斯蒂芬

    【讨论】:

    • 你是使用 android sdk 还是 java sdk 运行它?它应该使用android找到,并且不会使用java sdk找到,因为这个类是android的一部分。
    猜你喜欢
    • 2016-06-16
    • 2016-04-16
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多