【发布时间】:2019-06-27 20:48:31
【问题描述】:
我有一个泛型类型的复杂用例,已在下面进行了简化
trait A
class AB extends A{
val v = 10
}
trait X[T<:A]{
def request: T
}
class XY extends X[AB]{
def request = new AB()
}
class Test extends App{
/**
* X[A]
* X[AB]
* XY[A]
* XY[AB]
*/
def test[C<:A, D <: X[C]](t:Int)(input: D): Unit ={
print(input.getClass.getName)
}
implicit val req = new XY()
test(2)(req)
}
测试方法应该支持注释部分定义的类型场景。我收到以下编译错误。
Error:(33, 7) inferred type arguments [XY] do not conform to method test's type parameter bounds [D <: X[Nothing]] test(2)(req)
这在语法上合法吗? 提前致谢。
【问题讨论】:
-
除非它是简化的一部分,否则如果
D仅用于签名一次,则可以将其删除:test[C<:A](t:Int)(input: X[C])。