我希望能够做这样的事情(实际上不会起作用):
class A[T <: B | C]
...并期望这是有效的:
new A[B]
new A[C]
...这会导致编译错误:
new A[D]
这样的事情可能吗?
答案 0 :(得分:4)
您可以使用隐含:
trait AArg[T]
class A[T](implicit e: AArg[T])
implicit val argB = new AArg[B] { }
implicit val argC = new AArg[C] { }
虽然这并不妨碍某人创建类型为AArg[D]
的隐式val。