Gymterview
junior

Для чего нужны функциональные интерфейсы ObjDoubleConsumer, ObjIntConsumer и ObjLongConsumer?

Эти интерфейсы представляют операцию, принимающую два аргумента — объект типа T и примитив — и ничего не возвращающую. Они являются специализированными версиями BiConsumer, где второй аргумент — примитив, что позволяет избежать автобоксинга.

Интерфейс Первый аргумент Второй аргумент
ObjDoubleConsumer<T> T double
ObjIntConsumer<T> T int
ObjLongConsumer<T> T long

Типичное применение — аккумулирование примитивного значения в объекте-контейнере:

Пример
ObjIntConsumer<List<Integer>> addToList = (list, value) -> list.add(value);

На собеседовании: эти интерфейсы спрашивают крайне редко. Достаточно понимать общую логику именования: Obj + примитивный тип + Consumer.