我正在尝试从 Ruby 端枚举接口的方法,据我所知,JRuby 映射到模块。
我认为应该工作:
name = # omitting logic which is currently iterating entries of a jar file
clazz = name.constantize
clazz.instance_methods
如果我调用instance_methods
一些真正的模块,例如Enumerable
,我会得到我看到记录的所有方法的完整列表。
同样,如果我调用一些类似 JRuby或被JRuby 特殊处理的instance_methods
Java 接口,我会得到一个列表,但它只包括特殊的 Ruby 方法,而不是接口上存在的所有方法。Comparable
Collection
在任何其他接口上调用它都会返回[]
,这并不是特别有用。
我知道我可以java_class
使用 Java introspection 来获取声明的方法,但我特别想要所有方法的 Ruby 名称,因为我试图将 jar 的内容与运行规范的结果进行比较,尝试并找到未经测试的方法。
有没有合适的方法来做到这一点?