2010-04-14 5 views
2

J'ai une fonction avec une signature similaire à String.format(String, Object...).JRuby: comment appeler une fonction Java variadique sans arguments optionnels

Je veux appeler cette fonction de JRuby sans les derniers paramètres (car il est facultatif), mais mon code renvoie une ArgumentError (wrong # of arguments(1 for 2))

Est-il possible d'appeler cette fonction avec seulement 1 argument comme Je ferais en Java?

+1

Excusez mon ignorance, est-il possible de le faire arguments optionnels dans Java en dehors de la surcharge de méthode (c.-à-d., plusieurs méthodes de même nom avec des paramètres différents)? –

+0

Je ne pense pas. Mis à part la surcharge de méthodes et les fonctions variadiques, je ne vois pas d'autre solution. –

Répondre

1

Envelopper les varargs dans un tableau 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> 

Si tout ce que vous voulez est de sauter les varargs, passez un tableau Java vide au lieu

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

J'ai déjà pensé que je pouvais le faire. Ce que je veux, c'est pouvoir appeler la méthode sans l'argument du tableau. Actuellement, je suis ré-ouvrant chaque classe à la main pour changer la signature de la méthode. –

+1

Je ne pense pas qu'il soit possible pour Jruby de faire cela automatiquement pour vous - regardez leur bugtracker, il y avait une mention de ceci spécifiquement – Julik

Questions connexes