参数化组件与蛋糕模式配合良好,只要您只对每个类型组件的唯一组件感兴趣,例如:
trait AComponent[T] {
val a:A[T]
class A[T](implicit mf:Manifest[T]) {
println(mf)
}
}
class App extends AComponent[Int] {
val a = new A[Int]()
}
new App
现在我的应用程序要求我注入A [Int]和A [String],显然scala的类型系统不允许我两次扩展AComponent。这种情况下的常见做法是什么?
答案 0 :(得分:1)
我认为AComponent本身不需要参数化。松散类型参数并将其更改为
trait AComponent {
val aInt: A[Int]
val aStr: A[String]
class A[T](implicit mf:Manifest[T]) {
println(mf)
}
}
class App extends AComponent {
val aInt = new A[Int]()
val aStr = new A[String]()
}
如果您希望能够为Int和String
提供实例