当前位置: 首页 > 知识库问答 >
问题:

Java8:带有可变参数的Lambda

翁宜年
2023-03-14

我正在寻找一种方法来调用多个参数方法,但是使用lambda构造。文档中说lambda只有在能够映射到功能接口时才可用。

test((arg0, arg1) -> me.call(arg0, arg1));
test((arg0, arg1, arg2) -> me.call(arg0, arg1, arg2));
...
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
}

基本上,如上所述,考虑使用lambda中不同数量的属性的方法。

共有1个答案

韩征
2023-03-14

java中,需要使用如下所示的数组。

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

如果call采用数组变量args这将起作用。如果不是,您可以使用反射来进行调用。

 类似资料:
  • 我只想传递一个lambda(代码块),并在需要时执行它。如何在下面的代码中实现方法(以及方法签名是什么):

  • 但是,如果Terminal中没有提供,我不知道如何(或者是否能够)为其设置默认值。像这样简单的东西不起作用。这里的一个解决方案是根据的内容或大小在函数中设置变量。但我不知道有没有更好的办法做到这一点。 因此,我正在寻找一种方法来使用来自终端的参数调用一个函数,其中需要一个数字(在本例中为2),而其余的是可选的,并设置为默认值。

  • 问题内容: 所有按钮都返回10。为什么? 我想要按钮1返回1,按钮2返回2 … 非常感谢您的帮助 问题答案: 您的匿名函数可以是闭包(如@abernert所指出的,在Python的情况下,它们 实际上并不是 闭包)-它们“封闭”了变量,以供以后引用。但是,它们不是在定义时查找值,而是 在调用 时查找值,这是整个循环结束 后 的某个时间(此时等于10)。 要解决此问题,您需要将的值重新绑定到其他东西

  • 5.7. 可变参数 参数数量可变的函数称为为可变参数函数。典型的例子就是fmt.Printf和类似函数。Printf首先接收一个的必备参数,之后接收任意个数的后续参数。 在声明可变参数函数时,需要在参数列表的最后一个参数类型之前加上省略符号“...”,这表示该函数会接收任意数量的该类型参数。 gopl.io/ch5/sum func sum(vals...int) int { total

  • 问题内容: 我正在向数据库中插入大约500 000个对象,其中许多对象是相同的(数据库中具有相同的主键表示),但是其他字段可能不同,因此我使用的方法是“更新-如果没有受影响的行-插入”。问题在于,有时对象的某些字段设置为null(无法从文件读取),并且已经在数据库中设置了某些值,因此我将其更新为null =删除它。)如何实现方案,即只更新字段不为空? 这是我现在如何做的一个简单示例: 问题答案:

  • 我可以通过执行以下操作将子集中的每个元素映射到一个FlatEntry: 而且效果很好。但当我尝试这样做时: eclipse(Mars4.5.0)编译器的功能如下: 我是不是漏掉了什么?我能纠正我的API,使它的使用不那么笨拙吗?还是我一直在指定类型参数?谢谢!