gpt4 book ai didi

groovy - 在 Groovy 中使用闭包实现接口(interface) - 调用了什么方法?

转载 作者:行者123 更新时间:2023-12-02 11:42:51 25 4
gpt4 key购买 nike

groovy 中有一个习惯用法,用单个闭包实现接口(interface)。闭包必须准备好处理传递的任何参数。效果很好。但是如何确定接口(interface)调用了哪个方法呢?

interface X
{ void f(); void g(int n); void h(String s, int n); }

x = {Object[] args -> println "method called with $args"} as X
x.f()

参数可用,但调用的方法的名称 - 显然 - 不可用。我错过了什么吗?

最佳答案

我认为迈克尔·鲍格沃特基本上是正确的。您通过大括号语法提供的实现提供了一种用于所有接口(interface)定义方法实现:

interface X { void f(); void g(int n); void h(String s, int n); }
x = {Object[] args -> println "method called with $args"} as X

x.f()
x.g(5)
x.h("a string",2)

如果您想使用每个方法的方法实现来创建闭包,请使用以下替代语法:

interface X
{ void f(); void g(int n); void h(String s, int n); }

x = [
f: {println "f is called"},
g: {int i-> println "g is called with param ${i}"},
h: {Object[] args -> println "h is called with ${args}"}
] as X

x.f()
x.g(5)
x.h("a string",2)

有关详细信息,请参阅以下内容:

关于groovy - 在 Groovy 中使用闭包实现接口(interface) - 调用了什么方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/820246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com