trait F[S]{
def evaluate(): S
}
从typeOf [F [Double]]如何找到返回类型"评估"是Double?
typeOf[F[Double]]
.decls
.filter(_.name.toString=="evaluate")
.head
.asMethod
.returnType
.dealias
==>小号
评估的类型信息返回了一个双重字母已被删除 - 它似乎很难查找并与类型参数匹配:
typeOf[F[Double]].typeArgs
==>列表(双人)
我的类可能有很多类型参数,所以我不能确定S是第一个类型参数,但类型参数的类型似乎是已知的。
答案 0 :(得分:3)
您可以使用asSeenFrom
。
val tpe = typeOf[F[Double]]
tpe.decls
.filter(_.name.toString == "evaluate")
.head
.asMethod
.returnType
.asSeenFrom(tpe, tpe.typeSymbol)