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

时间:2016-07-03 06:50:45

标签: java

我有一个Java接口InterfaceA,它定义了3个带有不同签名的方法(其中2个是默认的)。

另一个类定义了一个类似的方法:

public void f(InterfaceA ia) {
    .....
}

在单元测试中,这是如何使用的:

f((ArgA) -> return ArgA.write())

如果知道InterfaceA定义了3种方法,这怎么可能呢?

1 个答案:

答案 0 :(得分:2)

根据@FunctionalInterface的文档,接口实现 n 方法的事实并不意味着它不具备作为有效接口的资格。这些方法的细节是重要的。

  

从概念上讲,功能界面只有一个抽象方法。   由于默认方法具有实现,因此它们不是抽象的。   如果接口声明一个覆盖其中一个的抽象方法   java.lang.Object的公共方法,也不计入   界面的抽象方法计数,因为任何实现   接口将具有java.lang.Object或。的实现   别处。 (强调我的)

所以,这取决于有问题的界面。听起来你的界面被恰当地定义了。

相关问题