2010-04-14 4 views
2

У меня есть функция с сигнатурой, подобной String.format(String, Object...).JRuby: как вызвать вариационную функцию Java без дополнительных аргументов

Я хочу, чтобы вызвать эту функцию из JRuby без последних параметров (так как это не является обязательным), но мой код выдает ArgumentError (wrong # of arguments(1 for 2))

Есть ли способ, чтобы вызвать эту функцию только с 1 аргументом так же, как Я бы сделал на Java?

+1

Простите мое невежество, есть какой-то способ сделать необязательные аргументы в Java, кроме перегрузки метода (т. е. нескольких одинаковых методов с разными параметрами)? –

+0

Я так не думаю. Помимо перегрузок методов и вариационных функций я не вижу другого решения. –

ответ

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) 
+0

Я уже решил, что смогу это сделать. То, что я хочу, - это вызов метода без аргумента массива. В настоящее время я , повторно открывая каждый класс вручную, чтобы изменить подпись метода. –

+1

Я не думаю, что Jruby может сделать это за вас автоматически - посмотрите на их bugtracker, было упоминание об этом конкретно – Julik

 Смежные вопросы

  • Нет связанных вопросов^_^