我從JRuby調用Java方法時遇到了一個奇怪的問題。JRuby調用錯誤的方法
在我的Java類中,這些方法被定義了兩次,而且JRuby看起來是錯誤的。
所以我試圖用java_method
,但我一直有一個:
TypeError: cannot convert instance of class org.jruby.RubyModule to class java.lang.Class
這裏是我的Java代碼:
public class Renderer {
...
public void addRenderer(IElementRenderer r) {
System.out.println("Added element render: " + r.getClass().toString());
basicRenderers.add(r);
rendererMap.put(r.elementClass(), r);
}
public void addRenderer(IBasicRenderer r) {
System.out.println("SHOULD NOT GO THERE !!");
basicRenderers.add(r);
}
}
和我的JRuby代碼:
add_renderer = renderer.java_method :add_renderer, [Java::dragon.render.IElementRenderer]
add_renderer.call TextRenderer.new
我也嘗試與java_send
,但我得到了同樣的錯誤:
renderer.java_send(:add_renderer, [Java::dragon.render.IElementRenderer], TextRenderer.new)
接下來,我嘗試:
renderer.add_renderer(TextRenderer.new.to_java(IElementRenderer))
這一次沒有錯誤,但錯誤的方法被稱爲...
我怎樣才能解決這個問題呢?