После того, как я написал свой собственный универсальный функциональный интерфейс и использовал его с лямбда-выражениями, я должен использовать его в новом методе, который:
- обрабатывает общий массив в качестве входных данных, проверяя, что он имеет длину не менее 4
- обрабатывает любой экземпляр моего функционального интерфейса
- обрабатывает любой экземпляр лямбда-выражения, которое принимает аргумент и ничего не возвращает
- применяя к результату вашего экземпляра функционального интерфейса (здесь я полагаю, что должен использовать Consumer).
Никогда раньше не использовал функциональные интерфейсы, может кто-нибудь объяснить мне, как я должен передать 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;
}