在Scala中,如何获取类方法的返回TypeTag?

时间:2016-05-27 23:18:43

标签: scala reflection scala-reflect

我有一个班级:

package org.apache.project

class Foo {

def bar: List[Bar] = ...
}

这是scala反射中的一种方式,它允许我从className“org.apache.project.Foo”和方法名称“bar”获取typeOf [List [Bar]]吗?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

是的,如果FooType,您也可以找到方法bar的返回类型为Type

import scala.reflect.runtime.universe._

typeOf[Foo]                        // Get the type of Foo
   .decls                          // Get Foo's declared members
   .find(_.name.toString == "bar") // Find the member named "bar" as a symbol
   .head                           // Unsafely access it for now, use Option and map under normal conditions
   .asMethod                       // Coerce to a method symbol
   .returnType                     // Access the return type