Scala TypeTags/Reflection-如果我有一个类型对象,我可以得到它的参数类型吗?

Scala TypeTags/Reflection-如果我有一个类型对象,我可以得到它的参数类型吗?,scala,reflection,scala-2.10,Scala,Reflection,Scala 2.10,为了简化我的场景, 我有一个类型对象,它是Some[String]或Some[Int]或None。 我是否能够获取该类型对象并以某种方式将参数类型放入另一个对象中 乙二醇 这就是你的某种[字符串]类型。 如何将参数类型从中提取到类型对象中?与中一样,您可以使用提取器: import reflect.runtime.universe._ val tpe = typeOf[Some[String]] // same as typeTag[Some[String]].tpe // extract

为了简化我的场景, 我有一个类型对象,它是Some[String]或Some[Int]或None。 我是否能够获取该类型对象并以某种方式将参数类型放入另一个对象中

乙二醇

这就是你的某种[字符串]类型。 如何将参数类型从中提取到类型对象中?

与中一样,您可以使用提取器:

import reflect.runtime.universe._

val tpe = typeOf[Some[String]] // same as typeTag[Some[String]].tpe

// extract type parameters
val TypeRef(_,_, tps) = tpe
// tps has type List[Type]

val innerType = tps.head // <-- here is your type
// innerType: reflect.runtime.universe.Type = String
import reflect.runtime.universe_
val tpe=typeOf[Some[String]//与typeTag[Some[String]]相同。tpe
//提取类型参数
val TypeRef(,,tps)=tpe
//tps具有类型列表[类型]

val innerType=tps.head//也可能是。宏是编译时而不是运行时reflection@Senia我需要typeArgument的参数。是的,但类型API是完全相同的,这就是重点。无论如何,@senia链接中的答案将为您提供类型
String
,给定类型
Some[String]
,这就是我认为您需要的?好的-谢谢-我会试试。反射api很难导航,我发现。。。谢谢你的帮助。非常感谢-很抱歉给你带来困惑。反射API不太容易导航。
import reflect.runtime.universe._

val tpe = typeOf[Some[String]] // same as typeTag[Some[String]].tpe

// extract type parameters
val TypeRef(_,_, tps) = tpe
// tps has type List[Type]

val innerType = tps.head // <-- here is your type
// innerType: reflect.runtime.universe.Type = String