Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpMrPm 18 of 322 menu
◀ ▶

Метод первого аргумента в Java

Когда слева от :: стоит имя класса, а справа - не static-метод, первый аргумент функционального интерфейса становится объектом, у которого вызывают метод. Остальные аргументы интерфейса идут параметрами метода.

Запись String::toUpperCase для Function<String, String> эквивалентна лямбде, которая берёт строку и вызывает у неё toUpperCase. Для двух аргументов подходит BiFunction:

import java.util.function.BiFunction; import java.util.function.Function; class Post { String title; Post(String title) { this.title = title; } boolean startsWith(String prefix) { return title.startsWith(prefix); } } public class Main { public static void main(String[] args) { Function<String, String> upper = String::toUpperCase; System.out.println(upper.apply("draft")); Post post = new Post("Java tips"); BiFunction<Post, String, Boolean> check = Post::startsWith; System.out.println(check.apply(post, "Java")); } }

Метод String::startsWith в BiFunction<String, String, Boolean> работает так же: первый аргумент apply - строка, второй - префикс.

Дан код:

import java.util.function.Function; class Article { String body; Article(String body) { this.body = body; } int length() { return body.length(); } }

В main создайте статью с текстом "Hi" и получите длину ее текста отложенным вызовом. Выведите результат.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить