Выберите все ответы, где код компилируется:
BiConsumer< Integer, Double> biConsumer = (a, b) -> 22.5d;
Predicate<String> predicate = (String str) > str.contains("abc");
Supplier<Long> supplier = 0 → 0:
Function<String, Integer> function = (String s) -> s.length:
BinaryOperator<String> binaryOperator = s1, 52 -> s1.concat(s2);
UnaryOperator<Integer> unaryOperator = (String i) -> i;
Другие предметы Университет Лямбда-выражения и функциональные интерфейсы Java программирование компиляция кода Java ошибки компиляции Java лямбда-выражения Java функциональные интерфейсы Java типы данных Java университет Java учебный курс java примеры кода Java Java для студентов Новый
Давайте разберем каждый из приведенных вами вариантов кода и определим, компилируется ли он. Для этого мы будем обращать внимание на синтаксис и соответствие типов.
Этот код не компилируется, так как лямбда-выражение должно принимать два параметра (Integer и Double), но возвращает значение типа Double. BiConsumer не возвращает значение, поэтому здесь нужно использовать return
или просто не возвращать значение.
Этот код не компилируется, так как синтаксис лямбда-выражения неверный. Правильный синтаксис должен использовать стрелку ->
вместо >
. Правильный вариант будет: Predicate<String> predicate = (String str) -> str.contains("abc");
.
Этот код не компилируется, так как неверно используется синтаксис лямбда-выражения. Правильный вариант должен быть: Supplier<Long> supplier = () -> 0L;
.
Этот код компилируется. Здесь лямбда-выражение принимает строку и возвращает ее длину, что соответствует типу Integer.
Этот код не компилируется из-за неправильного синтаксиса. Лямбда-выражение должно принимать два параметра, и они должны быть указаны в круглых скобках. Правильный вариант: BinaryOperator<String> binaryOperator = (s1, s2) -> s1.concat(s2);
.
Этот код не компилируется, так как UnaryOperator принимает один параметр типа Integer, а здесь используется String. Правильный вариант будет: UnaryOperator<Integer> unaryOperator = (Integer i) -> i;
.
Таким образом, из предложенных вариантов только Function<String, Integer> function = (String s) -> s.length; компилируется корректно.