继续这个问题。
假设我有代码def bar(param: {def foo: Unit}*) = param.foreach(x => x.foo)
这个函数导致对象param
调用名为foo
的方法
我想知道以下是否可能(带或不带反射)
-
param
在编译时固定,函数的名称(在本例中为foo
)在运行时提供 -
param
在编译时固定,函数名、函数参数、值和返回类型在运行时提供。
param
和foo
的函数名都是在运行时提供的如果我理解你的问题:
- 在编译时,编译器检查每个
param
确实有一个具有正确签名的foo
方法。 - 在运行时,反射在下面被用来调用每个
param
的foo
方法
所以你不需要自己使用反射,但你应该记住反射将在运行时使用,并且可能会降低性能。