运行时方法类型参数化中的结构类型



继续这个问题。

假设我有代码
def bar(param: {def foo: Unit}*) = param.foreach(x => x.foo)

这个函数导致对象param调用名为foo的方法

[编辑]

我想知道以下是否可能(带或不带反射)

  • param在编译时固定,函数的名称(在本例中为foo)在运行时提供
  • paramfoo的函数名都是在运行时提供的
  • param在编译时固定,函数名、函数参数、值和返回类型在运行时提供。
我意识到结构类型已经使用了反射。所以我的问题是,如果Scala可以处理它,或者如果我在代码中显式地使用反射。我认为第三个需要反射,我可以使用ASM库。

如果我理解你的问题:

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

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

相关内容

  • 没有找到相关文章

最新更新