[英]Calling Java Generic Typed Method from Scala gives a Type mismatch error : Scala
[英]Scala: type mismatch when calling a method from generic trait
讓我們先來看一些代碼:
trait Foo[T] {
def fooize(value : T) : Unit
}
object TestFoo {
def testFooForType[T[_] <: Foo[_]](obj : T[Int]) {
obj.fooize(5)
}
}
為什么不進行類型檢查,如何克服這個困難? 我想要做的是測試針對特定類型T
(在示例中為Int
)實現給定特征Foo
任何類。
T[_] <: Foo[_]
表示“ T forSome類型”擴展了“ Foo forSome類型”。
它必須允許類型不同的情況。 (T [A]擴展為Foo [B])
將T與Int類型綁定不會影響Foo的類型,Foo的類型仍然不受限制。
您可以指定Foo的類型:
def testFooForType[T[_] <: Foo[Int]](obj : T[_]) {
obj.fooize(5)
}
或者您可以使類型關系明確:
def testFooForType[T[V] <: Foo[V]](obj : T[Int]) {
obj.fooize(5)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.