0

跟进这个 SO 问题。

假设我有代码

def bar(param: {def foo: Unit}*) = param.foreach(x => x.foo)

此函数使对象param调用名为foo

[编辑]

我想知道以下是否可能(有或没有反射)

  • param在编译时固定,函数的名称(在这种情况下foo)在运行时提供
  • 两者param和函数的名称foo都是在运行时提供的
  • param在编译时是固定的,函数的名称、函数参数、值和返回类型在运行时提供。

我意识到结构类型已经使用反射。所以我的问题是 Scala 是否可以处理它,或者我是否在我的代码中明确使用了反射。我认为第三个需要反射,我可以使用ASM库。

4

1 回答 1

1

如果我理解你的问题:

  1. 在编译时,编译器会检查每个param方法是否确实具有foo具有正确签名的方法。
  2. 在运行时,在下面使用反射来调用foo每个的方法param

所以你不需要自己使用反射,但你应该记住反射将在运行时使用,并且可能会降低性能。

于 2011-10-06T11:40:39.403 回答