所以这就是我所拥有的:
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]
。