Можно ли считать Java MethodHandles тем же, что и функции первого класса?
Java Method Class и MethodHandle Class в Java 7 оба относятся к объектам, связанным с методами, но все же они редко используются, и когда функцию нужно передать другому, предпочтительнее использовать анонимный класс, реализующий интерфейс, который содержит один метод.
(Примечание: MethodHandles должны быть быстрее, чем старые Methods.)
Почему эти конструкции не используются чаще для передачи функций функциям? Это потому, что они все еще многословны?
Пример кода:
public final class HigherOrder {
public static final List> map(final List> list, final MethodHandle mh) throws Throwable {
if (list == null) return null;
List
UPDATE
После проведения некоторого бенчмаркинга я заметил, что MethodHandle быстрее, чем метод Reflection, но все еще не так быстро, как обычный вызов метода. Возможно, для вызова метода JVM может применить некоторые оптимизации, которые невозможны для хэндлов.