如何查找使用scala反射返回类型参数的方法的类型?

如何查找使用scala反射返回类型参数的方法的类型?,scala,Scala,从typeOf[F[Double]]如何找到“evaluate”的返回类型是Double trait F[S]{ def evaluate(): S } ==>S evaluate返回double的类型信息没有被删除——只是看起来很难查找并与类型参数匹配: typeOf[F[Double]] .decls .filter(_.name.toString=="evaluate") .head .asMethod .returnType .dealias ==>列表(双精度) 我

从typeOf[F[Double]]如何找到“evaluate”的返回类型是Double

trait F[S]{
  def evaluate(): S
}
==>S

evaluate返回double的类型信息没有被删除——只是看起来很难查找并与类型参数匹配:

typeOf[F[Double]]
 .decls
 .filter(_.name.toString=="evaluate")
 .head
 .asMethod
 .returnType
 .dealias
==>列表(双精度)


我的类可能有许多类型参数,因此我不能确定S是第一个类型参数,但类型参数的类型似乎是已知的。

您可以使用
asSeenFrom

typeOf[F[Double]].typeArgs 
val tpe = typeOf[F[Double]]

tpe.decls
  .filter(_.name.toString == "evaluate")
  .head
  .asMethod
  .returnType
  .asSeenFrom(tpe, tpe.typeSymbol)