我希望能够做这样的事情(实际上不会工作):
class A[T <: B | C]
...并期望这是有效的:
new A[B]
new A[C]
...这会产生编译器错误:
new A[D]
这样的事情可能吗?
最佳答案
您可以使用隐式:
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 .
关于scala - 我可以将泛型类型参数限制为 2 个不相关的类之一吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26314446/