所以这就是我所拥有的:
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 }}
答案 0 :(得分:0)
type_map(type_name) map (c_type => c_type.erasure.newInstance().asInstanceOf[Component])
顺便说一下,{1}在2.10中已弃用,您应该使用Manifest
和ClassTag
代替。