Java 8: вывод типа завершается неудачно при сопоставлении объектов со ссылками на методы

У меня есть массив объектов классов, которые расширяют этот абстрактный класс в переменной handlers:

public abstract class RequestHandler {

    public boolean handleGet(final HttpServletRequest request, final HttpServletResponse response) {
        return true;
    }

    public boolean handlePost(final HttpServletRequest request, final HttpServletResponse response) {
        return true;
    }

    public boolean handlePut(final HttpServletRequest request, final HttpServletResponse response) {
        return true;
    }

    public boolean handleDelete(final HttpServletRequest request, final HttpServletResponse response) {
        return true;
    }

    public boolean handleTrace(final HttpServletRequest request, final HttpServletResponse response) {
        return true;
    }

    public boolean handleOptions(final HttpServletRequest request, final HttpServletResponse response) {
        return true;
    }

    public boolean handleConnect(final HttpServletRequest request, final HttpServletResponse response) {
        return true;
    }

    public boolean handlePatch(final HttpServletRequest request, final HttpServletResponse response) {
        return true;
    }
}

Теперь я хочу сопоставить эту коллекцию со списком BiFunction:

    final List<BiFunction<HttpServletRequest, HttpServletResponse, Boolean>> getHandlers = Arrays.stream(handlers)
            .<BiFunction<HttpServletRequest, HttpServletResponse, Boolean>>map(handler -> handler::handleGet)
            .collect(Collectors.toList());

И если я удалю явную спецификацию универсального типа:

    final List<BiFunction<HttpServletRequest, HttpServletResponse, Boolean>> getHandlers = Arrays.stream(handlers)
            .map(handler -> handler::handleGet)
            .collect(Collectors.toList());

Я получаю ошибку компиляции в handler::handleGet:

Объект не является функциональным интерфейсом

Почему компилятор правильно не выводит тип здесь? Спасибо!

0 ответов

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