使用Scala一些擺弄後,我來到了這個解決方案從給定的類型創建新的對象獲得從類型名稱類型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允許從其名稱獲取類型的東西? (或者更一般地,我可以用類型變量?)
'Class.forName'將返回'Class',而不是'Entity'的實例,所以這總是會失敗。 –