【问题标题】:JRuby: how to call a Java variadic function without optional argumentsJRuby:如何在没有可选参数的情况下调用 Java 可变参数函数
【发布时间】:2010-04-14 10:57:25
【问题描述】:

我有一个签名类似于String.format(String, Object...) 的函数。

我想在没有最后一个参数的情况下从 JRuby 调用这个函数(因为它是可选的),但是我的代码抛出了 ArgumentError (wrong # of arguments(1 for 2))

有没有办法像在 Java 中那样只用 1 个参数调用这个函数?

【问题讨论】:

  • 请原谅我的无知,除了方法重载(即多个具有不同参数的同名方法)之外,还有其他方法可以在 Java 中执行可选参数吗?
  • 我不这么认为。除了方法重载和可变参数函数,我看不到其他解决方案。

标签: jruby variadic-functions argument-error


【解决方案1】:

将可变参数包装到 Java 数组中

  jruby-1.4.0 > java.lang.System.out.format('foo %d, %d, %d, %d, %d', [1, 2, 3, 4, 5].to_java)
  foo 1, 2, 3, 4, 5 => #<Java::JavaIo::PrintStream:0x79ef3ccd> 

如果您只想跳过可变参数,请改为传递一个空的 Java 数组

  jruby-1.4.0 > java.lang.System.out.format('foo ', [].to_java) 

【讨论】:

  • 我已经认为我可以做到这一点。我想要的是能够在没有数组参数的情况下调用该方法。目前,我正在手动重新打开每个类以更改方法签名。
  • 我认为 Jruby 不可能自动为您执行此操作 - 看看他们的 bugtracker,其中特别提到了这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
相关资源
最近更新 更多