可以说类型参数 T 必须具有特定的超类型 S_1:
class Test[T <: S_1]
有没有办法说一个类型参数必须至少有多个超类型替代的超类型?类似(伪代码):
class Test[T <: S_1 || S_2]
或者:这不可能吗,因为这样的构造没有意义,并且会暗示代码中的设计错误?
可以说类型参数 T 必须具有特定的超类型 S_1:
class Test[T <: S_1]
有没有办法说一个类型参数必须至少有多个超类型替代的超类型?类似(伪代码):
class Test[T <: S_1 || S_2]
或者:这不可能吗,因为这样的构造没有意义,并且会暗示代码中的设计错误?
让我扩展Niklas的第二种选择。隐式参数可用于证明类型的某些内容,所以这似乎就是这样。它会是这样的:
class ThingIWantToProve[T]
object ThingIWantToProve {
// Here I define the proofs I need
implicit def s1IsProvable: ThingIWantToProve[S_1] = new ThingIWantToProve[S_1]
implicit def s2IsProvable: ThingIWantToProve[S_2] = new ThingIWantToProve[S_2]
}
class Test[T : ThingIWantToProve] // here I use a context bound