如何使用数组参数从JRuby调用重载的java函数

时间:2017-06-17 14:06:11

标签: java parameters jruby

我有一个带有重载方法的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[][])

1 个答案:

答案 0 :(得分:0)

为了处理歧义,可以像这样调用java函数:

m.java_send :print, [java.lang.Object], [["test"]]      #=> printing object...
m.java_send :print, [java.lang.Object[][]], [["test"]]  #=> printing matrix...

第一个参数是方法名称作为符号,第二个参数是参数类型的数组,所有后面的参数都传递给java函数。

来源:https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby#calling-masked-or-unreachable-java-methods-with-java_send