2013-07-19 174 views
0

我想枚舉從Ruby方面的接口的方法,據我所知,JRuby映射到模塊。我可以枚舉JRuby中Java接口的實例方法嗎?

我認爲應該工作:

name = # omitting logic which is currently iterating entries of a jar file 
clazz = name.constantize 
clazz.instance_methods 

如果我打電話instance_methodsEnumerable一些真正的模塊,我得到我所看到的記錄的方法的完整列表。

同樣,如果我叫instance_methodsComparable或由JRuby的特殊處理Collection一些Java接口上,我得到一個名單,但只包括特殊的Ruby方法,並不是所有的方法目前在界面上。

在任何其他接口上調用返回[],這不是特別有用。

我知道我可以下降到java_class並使用Java introspection來獲取聲明的方法,但我特別想要所有方法的Ruby名稱,因爲我試圖比較jar的內容和運行結果規格,試圖找到未經測試的方法。

有沒有適當的方法來做到這一點?

回答

0

嘗試java_instance_methods關於界面的java_class例如, :

>> Java::JavaLang::CharSequence.java_class.java_instance_methods.map(&:name) 
=> ["toString", "charAt", "length", "subSequence"]