在Scala中创建一个没有参数的匿名函数



我们知道,在Scala反射中,我们可以使用

调用方法
clazz.getDeclaredMethod("method").invoke(instance, parameters)

,其中invoke的函数签名为Object invoke(Object obj, Object... args)

如果我们想为上面的函数创建一个只有一个参数的匿名函数,我们可以写为

val method: Function1[Object, Object] = clazz.getDeclaredMethod("method").invoke(instance, _)

我的问题是,如何使一个匿名函数没有参数?

简单地编写clazz.getDeclaredMethod("method").invoke(instance)将不带任何参数地调用该方法,而不是将其作为一个匿名函数。

_语法首先是糖,与

相同:
val method: Function1[Object, Object] = x => clazz.getDeclaredMethod("method").invoke(instance, x)

为了编写不带参数的类似函数:

val method: Function0[Object] = () => clazz.getDeclaredMethod("method").invoke(instance)

相关内容

  • 没有找到相关文章

最新更新