Когда использовать функциональные интерфейсы в JAVA 8

У меня есть проект в Java, который я пытаюсь преобразовать в Java8 сейчас.

В этом у меня есть код, который вызывает метод, который я преобразовал в Java 8, как показано ниже.

JAVA 7:

Long id=10;
Student student= Student.findById(id);

JAVA 8

Long id=10;
Function<Long,Student> f=Student::findById;
f.apply(id);

Теперь мой вопрос, не имеет ли смысла преобразовывать вызовы методов, подобные этим, в JAVA 8.

Если да, в чем разница между приведенным выше кодом в JAVA 7 и JAVA 8.

Может ли кто-нибудь, пожалуйста, уточнить это???

1 ответ

Решение

В вашем примере с Java 7 вы вызываете findById() в строке 2 и присваиваете результат студенту. Используя ссылки на методы в вашем коде Java 8, вы сначала сохраняете ссылку на метод findById() в f и вызываете этот метод в строке 3. Ссылки на методы дают вам возможность отложить вызов методов. В сочетании с потоками вы можете добиться лени таким образом.

Для вашего примера не имеет смысла использовать ссылки на методы, так как они не приносят вам никакой пользы. Если вы хотите передать ссылку на метод в другую функцию или отложить вызов, имеет смысл использовать ссылки на метод. В противном случае вы просто загромождаете свой код явными вызовами apply.

Я рекомендую посмотреть на введение в Java 8 с примерами. Я прочитал книгу " Функциональное программирование на Java" и могу только рекомендовать ее.

Другие вопросы по тегам