gpt4 book ai didi

java - 参数数量不定的 Lambda 函数

转载 作者:行者123 更新时间:2023-12-03 12:10:38 25 4
gpt4 key购买 nike

我正在尝试完成类似于代码中给出的内容。我想要一个能够接受任何函数的 lambda 表达式

interface ExecuteAnyCode{
void execute(Object... args);
}

void entry(){
ExecuteAnyCode a = Math::sin;
ExecuteAnyCode b = System.out::println;

a.execute(5);
b.execute("Hello World")
}

但是它给了我一个关于传递给功能接口(interface)的函数中的参数的错误。有什么办法吗?

最佳答案

您的功能接口(interface)定义了一个接受Object... 的方法。无论您使用什么方法引用作为对该功能接口(interface)类型变量的赋值,都必须具有匹配的签名。 Math::sin 没有。

ExecuteAnyCode#execute 方法允许您调用它

ref.execute(1, 2, "3", 4, new Something());

如果你有,那会怎样

ExecuteAnyCode ref = Math::sin;
ref.execute(1, 2, "3", 4, new Something());

什么会传递给 Math.sin

该语言不允许您尝试做的事情。 Lambda 和方法引用要求此信息在编译时已知。

关于java - 参数数量不定的 Lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23962625/

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