gpt4 book ai didi

Java 8 : Lambda with variable arguments

转载 作者:搜寻专家 更新时间:2023-10-30 19:44:46 25 4
gpt4 key购买 nike

我正在寻找一种调用多个参数方法但使用 lambda 结构的方法。在文档中说 lambda 只有在可以映射到功能接口(interface)时才可用。

我想做这样的事情:

test((arg0, arg1) -> me.call(arg0, arg1));
test((arg0, arg1, arg2) -> me.call(arg0, arg1, arg2));
...

有什么方法可以在不定义 10 个接口(interface)(每个参数计数一个)的情况下优雅地做到这一点?

更新

我使用从非方法接口(interface)扩展而来的多个接口(interface),并重载该方法。

两个参数的例子:

interface Invoker {}
interface Invoker2 extends Invoker { void invoke(Object arg0, Object arg1);}
void test(Invoker2 invoker, Object ... arguments) {
test((Invoker)invoker, Object ... arguments);
}

void test(Invoker invoker, Object ... arguments) {
//Use Reflection or whatever to access the provided invoker
}

我希望有可能用一个解决方案替换 10 个调用程序接口(interface)和 10 个重载方法。

我有一个合理的用例,请不要问“你为什么要这样做?”之类的问题。和“您要解决的问题是什么?”或类似的东西。只知道我已经考虑清楚了,这是我试图解决的合理问题。

很抱歉,称它为调用者会造成混淆,但实际上它是我当前用例(测试构造函数合约)中的称呼。

基本上,如上所述,考虑一种在 lambda 中处理不同数量属性的方法。

最佳答案

Java 中,您需要使用这样的数组。

test((Object[] args) -> me.call(args));

如果 call 接受一个数组变量 args 这将起作用。如果没有,您可以使用反射来代替调用。

关于Java 8 : Lambda with variable arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32209621/

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