当前位置: 首页 > 面试题库 >

Java Lambda可以有多个参数吗?

禄俊逸
2023-03-14
问题内容

在Java中,lambda是否可以接受多种不同类型?

即:单个变量起作用:

    Function <Integer, Integer> adder = i -> i + 1;
    System.out.println (adder.apply (10));

Varargs也可以工作:

    Function <Integer [], Integer> multiAdder = ints -> {
        int sum = 0;
        for (Integer i : ints) {
            sum += i;
        }
        return sum;
    };

    //.... 
    System.out.println ((multiAdder.apply (new Integer [] { 1, 2, 3, 4 })));

但是我想要可以接受许多不同类型参数的东西,例如:

    Function <String, Integer, Double, Person, String> myLambda = a , b, c, d->  {
    [DO STUFF]
    return "done stuff"
    };

为了方便起见,主要用途是在函数内部具有小的内联函数。

我环顾了Google并检查了Java的Function Package,但找不到。这可能吗?


问题答案:

如果使用多个类型参数定义这样的功能接口,则是可能的。没有这样的内置类型。(有一些带有多个参数的有限类型。)

@FunctionalInterface
interface Function6<One, Two, Three, Four, Five, Six> {
    public Six apply(One one, Two two, Three three, Four four, Five five);
}

public static void main(String[] args) throws Exception {
    Function6<String, Integer, Double, Void, List<Float>, Character> func = (a, b, c, d, e) -> 'z';
}

我在Function6这里叫它。名称由您自己决定,请尽量不要与Java库中的现有名称冲突。

如果您要问的话,也没有办法定义数量可变的类型参数。

某些语言(例如Scala)使用1、2、3、4、5、6等类型参数定义了许多内置类型。



 类似资料:
  • 问题内容: 我正在尝试选择和以外的所有s的元素。 许多人表明您可以在中放置多个参数,但是无论如何,尝试使用似乎都行不通。 有任何想法吗? 问题答案: 为什么:不只是使用两个: 是的,这是故意的

  • 问题内容: 我在这里遵循规范,不确定是否允许使用多个参数调用onFulfilled。例如: 这样我的代码: 会同时收到和? 我不在乎任何特定的promise实现如何实现,我希望严格遵循w3c规范中的promise。 问题答案: 我在这里遵循规范,不确定是否允许使用多个参数调用onFulfilled。 不,在promise构造函数中,仅第一个参数将被视为分辨率值。您可以使用诸如对象或数组之类的复合值

  • 主要用途是为了方便,在函数内部有小的内联函数。 我环顾了谷歌,检查了Java的函数包,但是没有找到。这可能吗?

  • 问题内容: 我正在尝试使用 在我的Matrix类上,但是在我看来,它是行不通的(我仍然不太清楚使用python)。我这样称呼它: 是否可以使用多个参数?谢谢。也许我只能使用一个参数,但是将其作为元组传递? 问题答案: 仅接受一个参数(除外),因此您可以通过一个元组。 你可以这样做: 输出 查看文档的更多信息。

  • 问题内容: 我已经实现了Spring RESTful Web服务。使用Jackson JSON进行对象映射。我有一个接受两个参数的方法。 客户端将如何构造一个请求,以便在正文中传递多个JSON对象? 这可能吗? -斯里 问题答案: 我很确定那是行不通的。可能有一种解决方法,但更简单的方法是引入包装器对象并更改您的签名:

  • 问题内容: 是否可以直接声明Flask URL可选参数? 目前,我正在按照以下方式进行: 我如何直接说这是可选的? 问题答案: 另一种方法是写 但是我想你想编写一条路由并将其标记为可选?如果是这样,我认为不可能。