Given I'm using reflection to go through a list of members (giving me runtime.universe.Symbol
), how can I check the generic type without the type arguments? In other words, how do I find the members which are List[]
generic type, regardless of what the type argument is?
Currently I'm using this approach which does work, but I'm wondering if there's a better way to do it:
import scala.reflect.runtime.currentMirror
// ...
val listTypeConstructor = typeOf[List[_]].typeConstructor
val myListMembers = currentMirror.reflect(MyObject)
.symbol
.asClass
.typeSignature
.members
.filter(member => member.typeSignature.resultType.typeConstructor == listTypeConstructor)
This results in a list of runtime.universe.Symbol
of all the List[]
members, including any List[String]
, List[Int]
, etc. as expected.
The usage of typeOf[List[_]].typeConstructor
seems a bit messy to me though. Is this the best way to do this kind of filtering?
Aucun commentaire:
Enregistrer un commentaire