scala写的类,用java的反射机制来获取方法时,在Android不同版本中出现问题。

was0107 发布于 2013/04/08 16:33
阅读 1K+
收藏 1

@肖国颖 你好,想跟你请教个问题:

目前在尝试使用scala编写软件,底层框架使用java写的,使用反射封装了一些事件的方法,上层使用scala写的,其中有一块使用了继承关系,当子类对象反射父类的方法时,在Android 4.0.3下面是可以获取到反射方法,而在Android 2.3.5下面,会抛出NoSuchMethodError。不知楼主是否有碰到类似的问题。

加载中
0
was0107
was0107
此问题已经解决,系某个方法的参数类型不匹配导致。
0
羊八井
羊八井

4.0.3?2.3.5?
这两个是版本号?

was0107
was0107
这个是Android系统的版本号。
0
高得顺
高得顺
反编译下scala的class 看看有没有对应方法
was0107
was0107
从.class文件来看,当前类及其父类是都有public方法的。断点调试的时候,发现父类的方法反射之后,均为空。
0
AK_诚
AK_诚

java反射中 method类中有两个获取类方法的相应方法 一个是获取当前类的所有方法getDeclaredMethods

一个是获取当前类以及父类的所有方法getMethods

was0107
was0107
恩, 是这样的。当前类getDeclaredMethods方法是有的,而getMethods方法为null. 跟踪到它的父类时候,两个均为null. 这就比较奇怪。
返回顶部
顶部