在我的Scala项目中,我使用Guice来绑定出现在三元组中的许多类,如:
bind[Foo1Component].to[Foo1]
bind[Foo2Component].to[Foo2]
bind[Foo3Component].to[Foo3]
// And so on for Bar, Baz, etc.
我认为有一个函数可以传递字符串"Foo"
并让它完成所有三个绑定。我能得到的最接近的是:
def bindAll(name: String): Unit = {
bind(Class.forName(name + "1Component")).to(Class.forName(name + "1"))
// likewise for 2 and 3, or do it in a loop
}
...但是这给了我一个冗长的错误消息,结果是编译器无法找出我想要的重载to
方法。由于bind(classOf[Foo1Component]).to(classOf[Foo1])
有效,我认为问题是Class.forName
会返回Class[_]
而不是Class
,并带有适当的类型参数。
有没有办法像这样动态绑定类?