用Scala Guice绑定Typeclass
我希望我在正确的轨道上 我有一个SBT子项目(用Scala Guice绑定Typeclass,scala,guice,Scala,Guice,我希望我在正确的轨道上 我有一个SBT子项目(model),它定义了一个抽象类AbstractTrainingEntity和几个子类(讲座,部分),另一个SBT子项目(华彩乐段)dependsOn第一个SBT子项目 model子项目定义了一个带有两个方法签名的抽象类型类,将在cadenza子项目中实现。这是为了允许模型子项目中的代码引用在两个SBT子项目链接在一起之前未定义的方法: import reflect.runtime.universe._ abstract class Abstrac
model
),它定义了一个抽象类AbstractTrainingEntity
和几个子类(讲座
,部分
),另一个SBT子项目(华彩乐段
)dependsOn
第一个SBT子项目
model
子项目定义了一个带有两个方法签名的抽象类型类,将在cadenza
子项目中实现。这是为了允许模型
子项目中的代码引用在两个SBT子项目链接在一起之前未定义的方法:
import reflect.runtime.universe._
abstract class AbstractTranscodeDispatch[A: TypeTag](dispatchType: AbstractTrainingEntity) {
def transcodeUrl(trainingEntity: AbstractTrainingEntity): String
def uploadUrl(trainingEntity: AbstractTrainingEntity): String
}
cadenza
子项目将其连接在一个Scala Guice
模块中:
import reflect.runtime.universe._
class CadenzaModule extends AbstractModule with ScalaModule {
@Provides
def provideTranscodeDispatch[T: TypeTag](dispatchType: AbstractTrainingEntity) = new TranscodeDispatch[T](dispatchType)
}
这会产生一个错误:
[error] /var/work/training/cadenza/modules/cadenza/app/modules/cadenza/CadenzaModule.scala:53: javassist.bytecode.stackmap.TypeTag does not take type parameters
[error] def provideTranscodeDispatch[T: TypeTag](dispatchType: AbstractTrainingEntity) = new TranscodeDispatch[T](dispatchType)
在cadenza
子项目的其他地方有一个实现
class TranscodeDispatch[A: TypeTag](dispatchType: AbstractTrainingEntity)
extends AbstractTranscodeDispatch[A](dispatchType)
我是否需要以某种方式使用TypeLiteral
?我把这一切都搞错了?这些文件很薄