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.