我有一个带有重载方法的java类,如下所示:
public class Main {
public void print(Object o) {
System.out.println("printing object...");
}
public void print(Object[][] o) {
System.out.println("printing matrix...");
}
}
如果参数是二维数组,我希望jruby调用print(Object[][])
,如下所示:
m = Main.new
m.print 123
m.print [[1,2],[3]]
但输出是:
printing object...
printing object...
所以jruby正在调用print(Object)
忽略数组类型。如何拨打jruby print(Object[][])
?
答案 0 :(得分:0)
为了处理歧义,可以像这样调用java函数:
m.java_send :print, [java.lang.Object], [["test"]] #=> printing object...
m.java_send :print, [java.lang.Object[][]], [["test"]] #=> printing matrix...
第一个参数是方法名称作为符号,第二个参数是参数类型的数组,所有后面的参数都传递给java函数。