相关疑难解决方法(0)

Scala协方差和下限类型解释

我试图通过使用下限创建新的不可变类型的方法来了解协方差

class ImmutableArray[+T](item: T, existing: List[T] = Nil) {  
  private val items = item :: existing

  def append[S >: T](value: S) = new ImmutableArray[S](value, items)
}
Run Code Online (Sandbox Code Playgroud)

我知道type参数T不能在append方法中使用,因为它违反了规则但是如果我说一个Customer类和子类Student我仍然可以创建类型U Student.

我可以看到这有效,但为什么这不违反规则?我可以理解,如果我有一个Students 列表然后添加了一个Customer我只能返回一个Customers 列表,因为它不允许Customer分配给a,Student因为它是父类型.但为什么我可以使用Student

我错过了什么?

谢谢布莱尔

generics scala type-bounds

12
推荐指数
2
解决办法
2484
查看次数

标签 统计

generics ×1

scala ×1

type-bounds ×1