0
私はパラメータ化タイプを持つクラスを持っているエキスは、Scalaでは、自己のタイプ
abstract class Worker[T] {
def conf1: ...
def conf2: ...
def doWork ...
}
abstract class SpecializedWorker[T: TypeTag] extends Worker[T] {
//some behavior overriden (used fields from Trait that i want create)
}
私は労働者に混合することができる形質を作成したいをパラメータ化。
trait Extension {
self: Worker[_] =>
def someParameter: ... // only several workers can have that. thats why i need trait
def produceSpecializedWorker = new SpecializedWorker[???]() {}
}
自己から型情報を抽出する方法???
trait Extension {
self: Worker[_] =>
def mkSpWorker[T](implicit ev: this.type <:< Worker[T]) = new SpecializedWorker[T]() {}
}
しかし、私はあなたがExtension
で使用することができWorker
で型のメンバを定義することができます:)ことをお勧めしません。ここで
質問を明確にしていただけますか?自己から労働者のタイプを抽出したいのですか?なぜあなたは 'trait Extension [T] {self:Worker [T]}'をしませんか? –
私はタイプTを2回設定する必要があるので。回避策はありますが、明確ではありません 'class SomeWorkerはWorker [SomeCaseClass]を拡張子[SomeCaseClass]で拡張します ' –
*" set type T twice? " –