我刚开始学习骆驼,我看到的第一件事是
context.addRoutes(new RouteBuilder() {
public void configure() {
from("file:data/inbox?noop=true").to("file:data/outbox");
}
});
我(合理地恕我直言)尝试用
context.addRoutes(()->from("file:data/inbox?noop=true").to("file:data/outbox"));
但这是无效的。
当我挖掘时,我发现 lambdas 适用于功能接口(如果接口符合条件,这是隐含的)但是 @FunctionalInterface 注释只能应用于接口(很公平),据我所知,抽象类没有等效的注释。RouteBuilder 当然是一个抽象类。
为什么 lambdas 仅限于接口?
接口和使“功能类”不安全/不可预测/不合理的类之间的本质区别是什么?
我可以理解是否有一些限定符,例如抽象方法必须是公共的,但是我无法解释为什么上述不合理。