将 class 类型传递给 Scala 中的函数

Pass class type to a function in Scala

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

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?

我假设我必须使用 reflect 或 returnType,但是如何传递通用类型?

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

process(id)(typeTag, classTag)

要了解如何从 Type 获取 TypeTag,请参阅 , and to get ClassTag from TypeTag, look here。 要从 member 获取 Type,请使用 member.returnType