Java 将lambda函数作为参数传递给需要接口的方法
我有一个Java接口Java 将lambda函数作为参数传递给需要接口的方法,java,Java,我有一个Java接口InterfaceA,它定义了3个具有不同签名的方法(其中2个是默认的) 另一个类定义了如下方法: public void f(InterfaceA ia) { ..... } 在单元测试中,这是如何使用的: f((ArgA) -> return ArgA.write()) 知道InterfaceA定义了3种方法,这怎么可能呢?根据的文档,一个接口实现了n种方法并不意味着它不符合有效接口的条件。重要的是这些方法的细节 从概念上讲,函数接口只有一个抽象方法。
InterfaceA
,它定义了3个具有不同签名的方法(其中2个是默认的)
另一个类定义了如下方法:
public void f(InterfaceA ia) {
.....
}
在单元测试中,这是如何使用的:
f((ArgA) -> return ArgA.write())
知道
InterfaceA
定义了3种方法,这怎么可能呢?根据的文档,一个接口实现了n种方法并不意味着它不符合有效接口的条件。重要的是这些方法的细节
从概念上讲,函数接口只有一个抽象方法。
因为默认方法有一个实现,所以它们不是抽象的。
如果接口声明了一个抽象方法,该方法重写
java.lang.Object的公共方法,也不计入
自
接口将具有来自java.lang.Object或
在别处(强调矿山)
因此,这取决于所讨论的接口。听起来您的接口定义得很恰当。阅读关于lambda表达式的文章。我读过了。我还是不知道这里发生了什么。我可以猜到lambda过度使用了接口方法,但是怎么做呢?哪一个?为什么我们不定义一个匿名类呢?lambda表达式提供了函数接口
InterfaceA
的单个方法的实现。它的行为非常类似于匿名类实例。如果InterfaceA
只有1个方法,但它有3个,则其他2个都是默认的。哪一个?
-只能有一个(至少一个抽象方法),否则这将无法通过编译。