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

标签 scala generics

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

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/

相关文章:

java - 泛型 - ?使用

generics - 将 trait 中方法的返回类型与实现该 trait 的类型绑定(bind)

java - 构造具有未知子类型的 Java 泛型

c# - 通用类型转换为原始类型

scala - 在 Scala 中绑定(bind)引用自身的类型是什么意思?

scala - 使用提取器匹配订单

scala - 使用 argonaut 解码为递归 ADT

ios - 无法使用 swift 类型的参数列表调用方法

html - 视频网站的 PlayFramework 导航栏

scala - 如何在 Scala-IDE 中解析对旋转生成的模板类的引用?