【发布时间】:2020-07-12 04:31:13
【问题描述】:
在编写了我自己的通用函数接口并将其与 lambdas 一起使用后,我必须在一个新方法中使用它:
- 处理一个泛型数组作为输入,检查它的长度是否至少为 4
- 处理我的功能接口的任何实例
- 处理任何 lambda 表达式的实例,它接受一个参数并且不返回任何内容
- 应用到功能接口实例的结果(这里我想我必须使用消费者)。
以前从未使用过函数式接口,谁能解释一下我应该如何将 2 个函数式接口作为方法参数传递?
例如通话:
applyTransformations(new Integer[]{1,2,3,4}, add, printer);
@FunctionalInterface
public interface MyFunctionalInterface<T> {
public T doOperation(T param1, T param2, T param3, T param4);
}
public class Lambdas {
MyFunctionalInterface<Integer> add = (i1, i2, i3, i4) -> i1 + i2 + i3 + i4;
MyFunctionalInterface<Integer> multiply = (i1, i2, i3, i4) -> i1 * i2 * i3 * i4;
MyFunctionalInterface<String> concatenate = (s1, s2, s3, s4) -> s1 + s2 + s3 + s4;
MyFunctionalInterface<String> concatenateWithSpacesBetween = (s1, s2, s3, s4) -> s1 + " " + s2 + " " + s3 + " " + s4;
}
【问题讨论】:
-
你能展示一些示例输入和输出吗?当收到什么输入时,你希望你的程序做什么?
-
基本上,applyTransformations() 方法将一个泛型数组(它可以是字符串、整数等类型)作为参数,接受我声明的功能接口的任何可能实例 - 添加、乘以整数并连接字符串和最后的打印机参数应该在控制台中打印给定 lambda 的结果。所以简而言之,applyTransformations(new Integer[]{1,2,3,4}, add, printer) 在控制台中应该只显示 10。
标签: java lambda functional-interface