То, что вы имеете в качестве ввода, - это функциональный интерфейс. Функциональные интерфейсы - это интерфейсы с одним абстрактным методом. Интерфейс Function принимает значение и возвращает другое.
В вашем примере, функция параметризована для получения ввода типа Line и возвращает выход типа Color.
Чтобы ответить на ваш вопрос, нет, цвет не является объектом, который содержит два объекта. Ваша функция называется color и в основном представляет собой код, который принимает аргумент и выдает результат.
Пример того, как это будет работать (замена Line для Integer и Color для String):
Function<Integer, String> changeIntegerToString = i -> i + "";
System.out.println(changeIntegerToString.apply(1));
Как я понимаю, вы хотите два типа ввода. Вы можете использовать интерфейс BiFunction, который будет выглядеть следующим образом:
BiFunction<Integer, String, String> combineIntegerAndStringToNewString = (i, s) -> "combination: " + i + s;
System.out.println(combineIntegerAndStringToNewString.apply(2, " test"));
Таким образом, вы можете использовать как Line и Color в качестве входных данных, так и делать то, что вам нужно, с их атрибутами для возврата результата.