Gymterview
junior

Для чего нужны функциональные интерфейсы ToDoubleBiFunction, ToIntBiFunction и ToLongBiFunction?

Эти интерфейсы принимают два аргумента обобщённых типов T и U и возвращают примитивный результат. Они являются специализациями BiFunction, оптимизированными для возврата примитива без автобоксинга.

Интерфейс Вход Выход
ToDoubleBiFunction<T, U> T, U double
ToIntBiFunction<T, U> T, U int
ToLongBiFunction<T, U> T, U long

Пример: вычисление расстояния между двумя точками:

Пример
ToDoubleBiFunction<Point, Point> distance = (a, b) ->
    Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));

На собеседовании: эти интерфейсы спрашивают редко отдельно, но полезно знать принцип: To_ в имени означает, что результат — примитив указанного типа.