0

所以这就是我所拥有的:

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].

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

重点是保存对象类型以便稍后在程序中实例化,但我无法让它工作,所有反射示例都期望某种类型参数转换为 via _.asInstanceOf[SomeClassType]

4

1 回答 1

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

?

顺便说一句,Manifest在 2.10 中已弃用,您应该使用ClassTags 和TypeTags 代替。

于 2013-10-13T07:13:39.167 回答