在我的项目中,我需要编写一个容器,该容器的某些方法仅适用于数字类型:int,double,byte等。在这种情况下,方法不应与其他类型一起使用并产生错误。
为此,发现了数字特征,但我不太理解为什么在此示例中它不适用于正确的类型。
class A[T](val a:T){
def method[U<:T with Numeric[T]](b:U):A[U]=new A[U](b)
}
scala> val a = new A[Int](1)
a: A[Int] = A@46c269e0
scala> val b = a.method(1)
<console>:12: error: inferred type arguments [Int] do not conform
to method method's type parameter bounds [U <: Int with Numeric[Int]]
val b = a.method(1)
^
<console>:12: error: type mismatch;
found : Int(1)
required: U
val b = a.method(1)
^