从scala中的self提取参数化类型
我有一个参数化类型的类从scala中的self提取参数化类型,scala,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) } 我想创造一种可以与员工混合的特质
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[???]() {}
}
如何从self中提取类型信息以替换???以下是提取类型参数的方法:
trait Extension {
self: Worker[_] =>
def mkSpWorker[T](implicit ev: this.type <:< Worker[T]) = new SpecializedWorker[T]() {}
}
或者您可以考虑将扩展名作为类型参数。我想这没什么大不了的。
你能澄清一下你的问题吗?您的意思是要从self中提取工作人员的类型吗?为什么不执行trait扩展[t]{self:Worker[t]}?因为我需要两次set类型t。这是可能的解决方法,但不清楚类SomeWorker使用扩展名[SomeCaseClass]扩展工人[SomeCaseClass]两次设置类型T是什么意思?类SomeWorker使用扩展名[SomeCaseClass]扩展工人[SomeCaseClass]abstract class Worker[T] {
type TT = T
}
trait Extension {
self: Worker[_] =>
def mkSpWorker = new SpecializedWorker[TT]() {}
}