2016-06-03 7 views
1

Angenommen, ich habe eine Liste von TypenKann parametrisiertes Type-Objekt in scala erstellen?

val types:List[Type] = List(typeOf[Int], typeOf[Float], typeOf[MyObject], ...) 

ist es möglich, diese in eine neue Sammlung zu kartieren, die Elemente ist sind Listen Typen von dem oben genannten Typ parametriert?

types.map(???) === List(typeOf[List[Int]], typeOf[List[Float]], typeOf[List[MyObject]], ...) 
+0

Ich habe immer gedacht, Typparameter zur Laufzeit gelöscht, so gibt es keinen Unterschied zwischen 'Liste [Int]' und 'Liste [Float]'. –

+0

Die Liste im ersten Beispiel enthält die vollständigen Typinformationen. Typ löschen ist nur relevant, wenn Sie den Typ von einem Objekt abfragen. Die Laufzeitobjekte benötigen keine Parameter. Sie können eine parametrisierte Klasse jedoch vollständig inspizieren, wenn Sie den Compiler danach fragen, indem Sie direkt auf den Typ verweisen. Dasselbe gilt für Scala und Java – user48956

Antwort

2
val tpeList = typeOf[List[_]] 
types.map(tpe => appliedType(tpeList, List(tpe))) 
Verwandte Themen