Я только начинаю изучать Camel, и первое, что я вижу, это
context.addRoutes(new RouteBuilder() {
public void configure() {
from("file:data/inbox?noop=true").to("file:data/outbox");
}
});
который я (разумно IMHO) пытаюсь заменить на
context.addRoutes(()->from("file:data/inbox?noop=true").to("file:data/outbox"));
но это неверно.
Как я роюсь, я обнаружил, что lambdas применяются к функциональным интерфейсам (что подразумевается, если интерфейс соответствует), но что аннотация @FunctionalInterface может применяться только к интерфейсам (достаточно справедливо), и есть, насколько я может сказать, нет эквивалентной аннотации для абстрактных классов. RouteBuilder - это, конечно, абстрактный класс.
Почему lambdas ограничен интерфейсами?
В чем существенное отличие между интерфейсом и классом, который делает "функциональный класс" небезопасным/непредсказуемым/необоснованным?
Я мог бы понять, был ли какой-то классификатор, например абстрактный метод, должен был быть общедоступным, но я затрудняюсь объяснить, почему вышеизложенное необоснованно.