我可以将泛型类型参数限制为2个不相关的类之一吗?

时间:2014-10-11 12:04:43

标签: scala generics

我希望能够做这样的事情(实际上不会起作用):

class A[T <: B | C]

...并期望这是有效的:

new A[B]
new A[C]

...这会导致编译错误:

new A[D]

这样的事情可能吗?

1 个答案:

答案 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。