2
votes

I have a type (that, in this case, represents return type of a method), and it is of the form List[Int] (for example).

I know that the type carries that information, because toString results in the proper value, but how can I extract that type? I tried .typeSymbol, but that loses all type information altogether.

1

1 Answers

2
votes

You can use the TypeRef extractor:

import reflect.runtime.universe._
// or in a macro "c.universe._"

val tpe = weakTypeOf[List[Int]]

// extract type parameters
val TypeRef(_,_, tps) = tpe

// tps has type List[Type]
println(tps.head) // Int