1
我有一個繼承自java類(例如java.util.HashMap)的JRuby類。第三方java代碼正在調用類的java實例的getClass()
類型上的反射方法,如getDeclaredMethods()
。我需要將我的ruby類(HM)中定義的方法推送到這些「聲明的方法」中,然後將其轉換爲java,以便它們顯示在第三方Java類中。任何人都知道方法?這裏是我的jruby代碼:添加到jruby類的getDeclaredMethods()
require 'java'
class HM < java.util.HashMap; end
hm = HM.new
puts hm.getClass()
# => org.jruby.proxy.java.util.HashMap$ProxyO
# a third party will make the following call:
puts hm.getClass().getDeclaredMethods().count
# => 2 methods
HM.class_eval do ; def value_at_key(key); return self[key]; end; end
puts hm.getClass().getDeclaredMethods().count
# => still 2 methods
謝謝,可能是這樣。我使用了你發佈的鏈接,嘗試了同樣的解決方案,並遇到了奇怪的問題 - 在這種情況下,它似乎沒有認識到VBox代理(來自javafx)是一個有效的參數。我會試着看看我能否得到這個工作,或者看看我是否不能重新打開聲明方法返回的數組(完全破解,但我仍然接受建議......)。 'class Controller' –
inyourcorner
>上添加了參數(org.jruby.proxy.javafx.scene.layout.VBox $ Proxy2)的方法'rubyToJava'我在問題中添加了一些說明基於類似帖子的反饋。 – inyourcorner