有没有可能写一个Java接口,你可以创建一个匿名类,但你不能为其创建一个lambda表达式?

问题描述 投票:0回答:1

是否有可能写一个Java接口,你可以创建一个匿名类,但你不能为其创建一个lambda表达式?

为什么或为什么不呢?

java lambda anonymous
1个回答
4
投票

Lambda表达式只能用于实现功能接口,即只有一个抽象方法的接口。

JLS 15.27. Lambda表达式 说。

对lambda表达式的评估会产生一个函数接口的实例(§9.8).

JLS 9.8. 职能接口 说。

A 功能界面 是一个接口,它只有一个抽象方法(除了 Object),从而代表一个单一的函数合约。

所以,如果你想要一个Java接口,而你又不能为它创建一个lambda表达式,就应该让这个接口有2个或更多的抽象方法。

匿名类仍然可以实现这样的接口,因为它们支持实现一个以上的方法。

© www.soinside.com 2019 - 2024. All rights reserved.