相关疑难解决方法(0)

scala中的循环类型参数定义

我试图定义一个通用容器,其元素可以返回封闭容器.就像是:

abstract class Container[E <: Element] { // compile error
  def contains( e: E ): Boolean
  def addNewElement(): Unit
}

abstract class Element[C <: Container] { // compile error
  def enclosingContainer(): C
}

class MyContainer extends Container[MyElement] {
  private var elements = List[MyElement]()
  override def contains( elem: MyElement ) = elements.contains( elem )
  override def addNewElement() { elements ::= new MyElement(this) }
}

class MyElement( container: MyContainer ) extends Element[MyContainer] {
  override val enclosingContainer = container
}
Run Code Online (Sandbox Code Playgroud)

但是,这种片段不编译,因为我应该给一个类型参数Element的 …

generics scala type-parameter

4
推荐指数
3
解决办法
652
查看次数

标签 统计

generics ×1

scala ×1

type-parameter ×1