0

我有一个具有此签名的函数;

def process[E: TypeTag : ClassTag](id: Int): E = {

通常我会这样称呼它:

process[Item](1)

我需要从项目类型存储在变量中的地方调用它。

tt.tpe.members.collect {
  case m if m.isMethod && m.asMethod.isCaseAccessor => m.asMethod
} foreach { member => {
  // member is a MethodSymbol that can be used to get a type
  // how to call process[??](id) from here?

我假设我必须使用反射或返回类型,但我怎样才能传递泛型类型?

4

1 回答 1

3

您可以显式地将typeTagand传递classTag给该方法,它将从中推断出类型参数:

process(id)(typeTag, classTag)

要弄清楚如何TypeTag从这里获得Type,请看这里,要从这里获得ClassTagTypeTag请看这里。要从中获取Typemember请使用member.returnType

于 2017-07-05T20:23:38.930 回答