Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# Method Reference (Ссылка на метод)
Выражение .map(Object::toString) — это method reference (ссылка на метод), один из ключевых элементов функционального программирования в Java 8+.
Что это такое?
Method reference — компактный синтаксис для передачи метода в качестве аргумента функциональному интерфейсу. Вместо лямбда-выражения:
stream.map(obj -> obj.toString())
Можно использовать более лаконичный синтаксис:
stream.map(Object::toString)
Виды method reference
1. Reference to a static method
Integer::parseInt // String::valueOf
Compare::compare
2. Reference to an instance method of a particular object
System.out::println
obj::toString
3. Reference to an instance method of an arbitrary object
Object::toString // Как в нашем примере
String::length
String::toUpperCase
4. Reference to a constructor
ArrayList::new
String::new
Практический пример
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
// С method reference
List<String> strings = numbers.stream()
.map(Object::toString)
.collect(Collectors.toList());
// Результат: ["1", "2", "3", "4", "5"]
// Эквивалентно лямбда-выражению
List<String> strings2 = numbers.stream()
.map(n -> n.toString())
.collect(Collectors.toList());
Преимущества
- Читаемость: явно видно, какой метод вызывается
- Компактность: меньше кода, чем лямбда-выражение
- Переиспользуемость: можно передавать существующие методы
- Производительность: компилятор может оптимизировать лучше
Когда это полезно
Мost часто используется в Stream API:
people.stream()
.map(Person::getName) // method reference
.filter(String::isEmpty) // static method reference
.forEach(System.out::println) // instance method reference
.collect(Collectors.toList());
Method reference делает код более декларативным и функциональным, что особенно важно при работе со Stream API и современной Java.