Ответ 1
Нет, ссылки на методы не поддерживают цепочку. В вашем примере не было бы ясно, какой из двух методов должен получить второй параметр.
Но если вы настаиваете на этом...
static <V,T,U> BiConsumer<V,U> filterFirstArg(BiConsumer<T,U> c, Function<V,T> f) {
return (t,u)->c.accept(f.apply(t), u);
}
...
BiConsumer<MyBean, String> c = filterFirstArg(List::add, MyBean::getList);
Именование метода предполагает просмотр его как взятие существующего BiConsumer
(здесь, List.add
) и добавление функции (здесь, MyBean.getList()
) к его первому аргументу. Его легко представить, как выглядит эквивалентный метод утилиты для фильтрации второго аргумента или обоих сразу.
Однако он в основном полезен для объединения существующих реализаций с другой операцией. В вашем конкретном примере используемый сайт не лучше обычного выражения лямбда
BiConsumer<MyBean, String> c = (myBean, id) -> myBean.getList().add(id);