Вызов Java-метода из Ruby, который принимает Java-примитив double с Ruby BigDecimal - PullRequest
2 голосов
/ 07 сентября 2011

Я получаю сообщение об ошибке при попытке вызвать метод объекта Java из JRuby, когда сигнатура метода Java имеет примитив double, а параметр, который я передаю, является Ruby BigDecimal.Есть ли какое-то неявное преобразование, которое возможно там, или это должно быть обработано явно.Я вызываю метод объекта Java с помощью send, если это имеет какое-либо значение.

java_object.send :some_method, a_big_decimal

(Это может фактически вызывать методы с различными типами сигнатур в объекте Java, поэтому мне не нужно беспокоиться только о BigDecimalsвот почему я хотел бы избежать явной обработки, если это возможно)

Я также пытался

java_object.send :some_method, a_big_decimal.to_java

Но это приводит к другой ошибке:

TypeError: cannot convert instance of class org.jruby.java.proxies.ConcreteJavaProxy to double

1 Ответ

0 голосов
/ 07 сентября 2011

Я просто гуглил для решения подобной проблемы, когда натолкнулся на этот вопрос (всего через 3 часа после того, как вы его опубликовали ... чертовски быстро Google!).

Я в конце концов смогрешить мою проблему, выполнив (эквивалент) это:

java_object.some_method a_big_decimal.to_f

Надеюсь, это будет работать для вас?

...