【发布时间】:2023-04-07 17:30:01
【问题描述】:
我正在尝试创建一个只接受 java.math.BigDecimal 或 Long 的泛型类。代码如下:
class myClass[T]()
{
def display( x : T) = {
println(x.doubleValue())
}
}
val input = new java.math.BigDecimal(100)
// val input = 100L
val x = new myClass[java.math.BigDecimal]()
x.display(input)
显然我会有这个错误:ScalaFiddle.scala:22: error: value doubleValue is not a member of type parameter T.
我尝试了数小时的隐式转换、视图绑定和上下文绑定。至今没有结果。有什么办法可以强迫 Scala 相信我 T 有方法 .doubleValue()? (java.big.Decimal 和 Long 都有 .doubleValue() 方法,但它们不共享同一个超类)
【问题讨论】:
标签: scala generics type-conversion implicit