que tienen un método que se parece a esto en Java:JSR223: llamar a Java "varargs" métodos de escritura
public void myMethod(Object... parms);
Pero no pueden llamar a este método como se espera de los scripts.
Si, en rubí, que hago:
$myObject.myMethod(42);
Me da org.jruby.exceptions.RaiseException: could not coerce Fixnum to class [Ljava.lang.Object
Si intento el siguiente en Javascript:
myObject.myMethod(42);
Entonces me da sun.org.mozilla.javascript.internal.EvaluatorException: Can't find method MyClass.test(number). (#2) in at line number 2
Por supuesto, si cambio la firma para tomar una canción le objeto, entonces funciona.
Supongo que esto se debe a que alguien a lo largo de la línea no sabe cómo convertir, digamos Integer
a Integer[]
con el valor en la primera posición.
Creo que algo como myMethod({42, 2009})
funcionaría en Ruby, pero esto parece feo: quería poder hacer myMethod(42, 2009)
para hacerlo menos confuso, especialmente para otros idiomas. ¿Hay alguna solución mejor para esto?
Gracias.
otro ejemplo: jruby -rjava -e 'fmt = java.util.Formatter.new(); pone fmt.format ("|% 4s |", ["üü"]. to_java) ' – reto