Jak utworzyć instancję typu reprezentowanego przez parametr typu w Scali
przykład:
import scala.actors._
import Actor._
class BalanceActor[T <: Actor] extends Actor {
val workers: Int = 10
private lazy val actors = new Array[T](workers)
override def start() = {
for (i <- 0 to (workers - 1)) {
// error below: classtype required but T found
actors(i) = new T
actors(i).start
}
super.start()
}
// error below: method mailboxSize cannot be accessed in T
def workerMailboxSizes: List[Int] = (actors map (_.mailboxSize)).toList
.
.
.
Zauważ, że drugi błąd pokazuje, że wie, że elementy aktora to „T”, ale nie, że „T” jest podklasą aktora, ograniczoną w ogólnej definicji klasy.
W jaki sposób można poprawić ten kod do pracy (używając Scala 2.8)?