假设我有代码
def bar(param: {def foo: Unit}*) = param.foreach(x => x.foo)
此函数使对象param
调用名为foo
[编辑]
我想知道以下是否可行(有或没有反思)
param
在编译时修复,函数名称(在本例中为foo
)在运行时提供param
和函数foo
的名称在运行时提供param
在编译时修复,函数名称,函数参数,值和返回类型在运行时提供。我意识到结构类型已经使用了反射。所以我的问题是Scala是否可以处理它,或者我是否在代码中明确使用了反射。我认为第3个需要反射,我可以使用ASM库。
答案 0 :(得分:1)
如果我理解你的问题:
param
是否确实存在具有正确签名的方法foo
。foo
的方法param
所以你不需要自己使用反射,但你应该记住反射将在运行时使用,并可能会降低性能。