是否有可能写一个Java接口,你可以创建一个匿名类,但你不能为其创建一个lambda表达式?
为什么或为什么不呢?
Lambda表达式只能用于实现功能接口,即只有一个抽象方法的接口。
JLS 15.27. Lambda表达式 说。
对lambda表达式的评估会产生一个函数接口的实例(§9.8).
JLS 9.8. 职能接口 说。
A 功能界面 是一个接口,它只有一个抽象方法(除了
Object
),从而代表一个单一的函数合约。
所以,如果你想要一个Java接口,而你又不能为它创建一个lambda表达式,就应该让这个接口有2个或更多的抽象方法。
匿名类仍然可以实现这样的接口,因为它们支持实现一个以上的方法。