Easymethod-referencejava8

Что такое Method Reference?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Method reference — краткая форма лямбды, когда она просто вызывает существующий метод. s -> s.length() эквивалентно String::length.

// 1. Static method
BinaryOperator<Integer> max = Math::max;          // (a, b) -> Math.max(a, b)

// 2. Instance method конкретного объекта
Consumer<String> printer = System.out::println;    // x -> System.out.println(x)

// 3. Instance method произвольного объекта (первый параметр — receiver)
Function<String, Integer> len = String::length;    // s -> s.length()

// 4. Constructor
Supplier<ArrayList<String>> factory = ArrayList::new; // () -> new ArrayList<>()

Работает, когда сигнатура совпадает с functional interface. Часто используется со Stream: .map(String::toUpperCase), .forEach(System.out::println). Не всегда короче лямбды.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.