2011-09-06 17 views
2

當Java方法的簽名具有原語double和參數I時嘗試從JRuby調用Java對象的方法時出現錯誤pass是一個Ruby BigDecimal。是否存在可能存在的任何隱式轉換或是否需要明確處理?如果這有什麼區別,我使用send來調用Java對象的方法。從Ruby中調用Java方法,該方法使用Ruby BigDecimal加載Java原語double

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 

回答

0

我只是谷歌搜索類似問題的解決方案,當我遇到這個問題(只有3小時後,你發佈它...該死的Google速度很快!)。

我最終能這樣做(相當於),以解決我的問題是:

java_object.some_method a_big_decimal.to_f 

希望這會爲你工作?

+0

是的,這就是我最終做的。我只是希望有一種隱式的方式,因爲在我的情況下,參數可以是除BigDecimal之外的其他類型。我必須檢查is_a?首先BigDecimal,它感覺有點醜。 –