我正在尝试使用Scala BigDecimal和Joda-Money。将scala BigDecimal传递给Money.of()
不起作用,因为它期望Java BigDecimal。
[error] C:\test.scala:82: overloaded method value of with alternatives:
[error] (x$1: org.joda.money.BigMoneyProvider,x$2: java.math.RoundingMode)org.joda.money.Money <and>
[error] (x$1: org.joda.money.CurrencyUnit,x$2: Double)org.joda.money.Money <and>
[error] (x$1: org.joda.money.CurrencyUnit,x$2: java.math.BigDecimal)org.joda.money.Money
[error] cannot be applied to (org.joda.money.CurrencyUnit, scala.math.BigDecimal)
[error] Money.of(gbp, a)
[error] ^
我可以使用有效的.underlying
:
val gbp = CurrencyUnit.of("GBP")
val a = BigDecimal("2.2")
Money.of(gbp, a.underlying)
但是有没有像隐藏转换这样的更好的方法?
答案 0 :(得分:3)
似乎在scala.math.BigDecimal中,只有
implicit def javaBigDecimal2bigDecimal(x: java.math.BigDecimal): BigDecimal =
BigDecimal(x)
所以你必须自己定义:
implicit def scalaBigDecimal2bigDecimal(x: BigDecimal): java.math.BigDecimal =
x.underlying
我不知道是否有任何库已经提供此转换。