Joh*_*ood 6 scala
可以说类型参数T必须具有特定的超类型S_1:
class Test[T <: S_1]
有没有办法说,一个类型参数必须至少有一个超类型的多个超类型备选方案?像(伪代码)的东西:
class Test[T <: S_1 || S_2]
或者:这是不可能的,因为这样的结构毫无意义,并且会在代码中暗示设计错误?
Nik*_* B. 9
简答:直观的解决方案是制作S_1和S_2分享一个共同的特征,代表你的类型参数所需的一组能力T.使用该特征作为上限T.
S_1
S_2
T
更多可能性:
如果S_1和S_2在本质上无关的和你的类型的要求T是,它具有一定的成员(即既S_1和S_2发生器),你可以使用一个结构类型制定的是(背后的理念被称为鸭打字).
如果由于某种原因你确实需要T成为S_1or 的子类S_2,并且你不能更改这些类型,你可以使用implicits将这两者转换为新引入的内部类型S_1_or_2,然后可以将其用作上限T.
S_1_or_2
归档时间:
13 年,2 月 前
查看次数:
271 次
最近记录: