РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
30 of 1163 menu

Ссылка на метод

Ссылка на метод (method reference) - это сокращенная форма записи лямбда-выражения, которая позволяет передать уже существующий метод в качестве реализации функционального интерфейса. Ссылка на метод использует оператор ::. В левой части оператора указывается класс или объект, а в правой - имя метода без круглых скобок. Компилятор автоматически подставляет аргументы в соответствии с сигнатурой функционального интерфейса.

Синтаксис

Класс::имяМетода объект::имяМетода Класс::new

Пример

Давайте передадим ссылку на статический метод Integer.parseInt в функциональный интерфейс Function:

import java.util.function.Function; public class Main { public static void main(String[] args) { Function<String, Integer> func = Integer::parseInt; Integer res = func.apply("12345"); System.out.println(res); } }

Результат выполнения кода:

12345

Пример

Давайте передадим ссылку на метод экземпляра toUpperCase класса String:

import java.util.function.Function; public class Main { public static void main(String[] args) { Function<String, String> func = String::toUpperCase; String res = func.apply("abcde"); System.out.println(res); } }

Результат выполнения кода:

"ABCDE"

Пример

Давайте передадим ссылку на метод экземпляра конкретного объекта:

import java.util.function.Supplier; public class Main { public static void main(String[] args) { String str = "abcde"; Supplier<String> sup = str::toUpperCase; String res = sup.get(); System.out.println(res); } }

Результат выполнения кода:

"ABCDE"

Пример

Давайте передадим ссылку на конструктор класса ArrayList:

import java.util.ArrayList; import java.util.List; import java.util.function.Supplier; public class Main { public static void main(String[] args) { Supplier<List<String>> sup = ArrayList::new; List<String> res = sup.get(); res.add("a"); res.add("b"); System.out.println(res); } }

Результат выполнения кода:

[a, b]

Пример

Давайте передадим ссылку на метод экземпляра произвольного объекта через BiFunction:

import java.util.function.BiFunction; public class Main { public static void main(String[] args) { BiFunction<String, String, Boolean> func = String::startsWith; Boolean res = func.apply("abcde", "abc"); System.out.println(res); } }

Результат выполнения кода:

true

Пример

Давайте используем ссылку на метод вместе с методом forEach:

import java.util.List; public class Main { public static void main(String[] args) { List<String> list = List.of("a", "b", "c", "d", "e"); list.forEach(System.out::println); } }

Результат выполнения кода:

"a" "b" "c" "d" "e"

Смотрите также

  • ключевое слово lambda,
    которое является полной формой записи ссылки на метод
  • ключевое слово import static,
    которое позволяет импортировать статические методы
  • ключевое слово new,
    которое используется для создания объектов
  • ключевое слово this,
    которое ссылается на текущий объект
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить