问题
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:
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
来源:https://stackoverflow.com/questions/17166911/how-do-i-get-type-parameter-from-type-with-type-parameter-inside-scala-macro