没有类型参数的scala中的运行时实例化

时间:2013-10-12 23:55:33

标签: scala reflection

所以这就是我所拥有的:

type CompType = Manifest[_ <: Component]

type EntityType = HashSet[CompType]
type CompSet = HashSet[Component]

val type_map = new HashMap[String, EntityType]
val entity_map = new HashMap[EntityID, CompSet]

def createEntityType(type_name: String) = {
  val ent_id = new EntityID
  val ent_type: CompSet =
    type_map(type_name) map (c_type => c_type.erasure.newInstance())

  entity_map += (ent_id -> ent_type)

  ent_id
}

但正如您所看到的,map函数未创建CompSet,它会创建HashSet[Any]

有没有办法解决这个问题?

重点是在程序中稍后保存用于实例化的对象类型,但我无法使其工作,并且所有反射示例都希望某种类型参数通过{{1 }}

1 个答案:

答案 0 :(得分:0)

type_map(type_name) map (c_type => c_type.erasure.newInstance().asInstanceOf[Component])

顺便说一下,{1}在2.10中已弃用,您应该使用ManifestClassTag代替。