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