在对 scala 进行了一番摆弄之后,我找到了从给定类型创建新对象的解决方案
object Entity {
def get[T <: Entity: ClassManifest]: T = {
val entity = implicitly[ClassManifest[T]].erasure.getConstructors()(0).newInstance().asInstanceOf[T]
/** some stuff **/
entity
}
}
abstract class Entity {
}
class Implementation extends Entity {
}
然后用法:
var e = Entity.get[Implementation]
我的问题
可以吗,还是有一些不同的方法(我现在使用的是 scala 2.9.2)?
有没有像 Class.forName 这样的东西允许从它的名字中获取类型?(或更一般地说,我可以使用类型作为变量吗?)