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 のようなものはありますか? (または、より一般的には、型を変数として使用できますか?)