Joh*_*rms 8 java scripting variadic-functions
我有一个在Java上看起来像这样的方法:
public void myMethod(Object... parms);
Run Code Online (Sandbox Code Playgroud)
但我不能按照脚本的预期调用此方法.
如果,在红宝石中,我这样做:
$myObject.myMethod(42);
Run Code Online (Sandbox Code Playgroud)
它给了我 org.jruby.exceptions.RaiseException: could not coerce Fixnum to class [Ljava.lang.Object
如果我在Javascript中尝试以下内容:
myObject.myMethod(42);
Run Code Online (Sandbox Code Playgroud)
然后它给了我 sun.org.mozilla.javascript.internal.EvaluatorException: Can't find method MyClass.test(number). (#2) in at line number 2
当然,如果我更改签名以获取单个对象,那么它可以工作.
我认为这是因为有人沿线不知道如何转换,说Integer要Integer[]与在第一位置的值.
我相信类似的东西myMethod({42, 2009})可以在Ruby中运行,但这看起来很丑陋 - 我希望能够myMethod(42, 2009)让它不那么混乱,特别是对于其他语言.有没有更好的解决方法呢?
谢谢.
这似乎是 jruby 中的一个已知错误。请参阅Java 对象/类上的方法分派 应尝试查找匹配的 varargs 方法,并在尝试将参数传递给定义为具有可变长度参数的 Java 方法时抛出 NameError。
根据链接 Rhino 确实支持 vararg。
| 归档时间: |
|
| 查看次数: |
1396 次 |
| 最近记录: |