Вопрос проверяет понимание различий между method reference и лямбда-выражениями в Java, что важно для написания чистого и читаемого кода.
Method reference (ссылка на метод) — это синтаксический сахар над лямбда-выражением. Если лямбда просто вызывает один метод, её можно заменить на method reference. Например, s -> System.out.println(s) превращается в System.out::println. Лямбда же может содержать несколько операций, условия или вызовы разных методов.
// Лямбда
List<String> names = Arrays.asList("Alice", "Bob");
names.forEach(s -> System.out.println(s));
// Method reference
names.forEach(System.out::println);
// Лямбда с логикой
names.forEach(s -> {
if (s.startsWith("A")) {
System.out.println(s.toUpperCase());
}
});
// Такой код нельзя заменить method referenceClassName::staticMethodinstance::methodClassName::instanceMethodClassName::newЕсли лямбда состоит из одного вызова метода — предпочтительнее method reference, так как код становится короче и понятнее. Если нужно выполнить несколько действий или есть логика — используйте лямбду.
Вывод: Method reference улучшает читаемость кода, когда лямбда сводится к простому вызову метода. В остальных случаях лямбда остаётся более гибким инструментом.