为什么示例不编译,又如何(共同,反向和反向)方差有效?
有人可以在Scala中解释以下内容:
class Slot[+T] (var some: T) { // DOES NOT COMPILE // "COVARIANT parameter in CONTRAVARIANT position"}
我明白之间的区别+T
,并T
在类型声明(它编译如果我使用T
)。但是,如何实际编写一个在其类型参数中具有协变性的类而不依赖于创建未参数化的东西?如何确保只能使用实例创建以下内容T
?
class Slot[+T] (var some: Object){ def get() = { some.asInstanceOf[T] }}
largeQ