我有一个像这样的通用界面:
trait Thing {
...
}
和这样的实现:
class ThingA extends Thing {
...
}
class ThingB extends Thing {
...
}
使用哪一个是在运行时确定的,因此配置了一个池以提供正确的一个:
class Things(a: ThingA, b: ThingB) {
addThing(a)
addThing(b)
def getThing(x: String) = { ... }
}
如何Thing
在不将其显式添加到构造函数的情况下将所有配置的 s 提供给 ThingPool?
如,我想做以下事情:
class Things(pool: ThingPool) {
addThingsFromPool(pool)
def getThing(x: String) = { ... }
}
...在没有明确要求的情况下,ThingPool
所有s 都在哪里。Thing
...或者,ThingPool
可能是一个List[Thing]
.
当前的状态需要两次额外的编辑才能添加Thing
. 我想达到我需要做的就是在我的 Guice 模块中添加绑定语句的地步。
为了清楚起见,我省略了注释。