Java 将lambda函数作为参数传递给需要接口的方法

Java 将lambda函数作为参数传递给需要接口的方法,java,Java,我有一个Java接口InterfaceA,它定义了3个具有不同签名的方法(其中2个是默认的) 另一个类定义了如下方法: public void f(InterfaceA ia) { ..... } 在单元测试中,这是如何使用的: f((ArgA) -> return ArgA.write()) 知道InterfaceA定义了3种方法,这怎么可能呢?根据的文档,一个接口实现了n种方法并不意味着它不符合有效接口的条件。重要的是这些方法的细节 从概念上讲,函数接口只有一个抽象方法。

我有一个Java接口
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个都是默认的。
哪一个?
-只能有一个(至少一个抽象方法),否则这将无法通过编译。