是否有可能有一个列表并将其用作闭包签名的参数,而不是几个变量?原因是我必须从java代码调用一个闭包,而java代码不知道groovy闭包需要什么变量 .
用一个例子可以更好地服务 .
假设我有一个'闭包存储库',每个闭包可能有不同的签名 . 例如:
closures = [
closureA: { int a, String b ->
a.times {
System.err.println(b);
}
},
closureB: { int a, int b, String c ->
(a+b).times {
System.err.println(c);
}
}
]
然后我有一个方法,我正在暴露于我的java代码来调用这些闭包:
def tryClosureExpansion(String whichClosure, Object ... args) {
def c = closures[whichClosure]
c.call(args) // DOESNT COMPILE !
}
而Java我会像这样调用这个方法:
// these calls will happen from Java, not from Groovy
tryClosureExpansion("closureA", 1, "Hello");
tryClosureExpansion("closureB", 1, 5, "Hello more");
请参见上面未编译的行 . 我觉得groovy是'groovy'足以处理这样的事情 . 任何可能会飞的替代品?
1 回答
请问:
工作?不是在计算机上测试它