← Назад к вопросам

Как называется выражение .map(Object::toString)

1.0 Junior🔥 81 комментариев
#Другое

Комментарии (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.

Как называется выражение .map(Object::toString) | PrepBro