【问题标题】:Invoking a Java method from Ruby that takes a Java primitive double with a Ruby BigDecimal从 Ruby 调用 Java 方法,该方法采用带有 Ruby BigDecimal 的 Java 原语 double
【发布时间】:2011-09-06 21:00:13
【问题描述】:

当 Java 方法的签名具有原始双精度并且我传递的参数是 Ruby BigDecimal 时,尝试从 JRuby 调用 Java 对象上的方法时出现错误。那里是否有任何可能的隐式转换,或者是否必须明确处理。如果有任何区别,我将使用 send 调用 Java 对象的方法。

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

【问题讨论】:

    标签: java ruby jruby bigdecimal


    【解决方案1】:

    当我遇到这个问题时,我只是在谷歌上搜索类似问题的解决方案(仅在您发布后 3 小时......该死的 Google 速度很快!)。

    我最终能够通过这样做(相当于)解决我的问题:

    java_object.some_method a_big_decimal.to_f
    

    希望这对你有用吗?

    【讨论】:

    • 是的,我最终也是这样做的。我只是希望有一种方法可以隐式地做到这一点,因为在我的情况下,参数可以是 BigDecimal 以外的其他类型。我必须检查 is_a?首先是 BigDecimal,感觉有点丑。
    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 2010-09-30
    • 2014-05-05
    相关资源
    最近更新 更多