如何查找使用scala反射返回类型参数的方法的类型?
从typeOf[F[Double]]如何找到“evaluate”的返回类型是Double如何查找使用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 ==>列表(双精度) 我
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)