我有一个Java接口InterfaceA
,它定义了3个带有不同签名的方法(其中2个是默认的)。
另一个类定义了一个类似的方法:
public void f(InterfaceA ia) {
.....
}
在单元测试中,这是如何使用的:
f((ArgA) -> return ArgA.write())
如果知道InterfaceA
定义了3种方法,这怎么可能呢?
答案 0 :(得分:2)
根据@FunctionalInterface
的文档,接口实现 n 方法的事实并不意味着它不具备作为有效接口的资格。这些方法的细节是重要的。
从概念上讲,功能界面只有一个抽象方法。 由于默认方法具有实现,因此它们不是抽象的。 如果接口声明一个覆盖其中一个的抽象方法 java.lang.Object的公共方法,也不计入 界面的抽象方法计数,因为任何实现 接口将具有java.lang.Object或。的实现 别处。 (强调我的)
所以,这取决于有问题的界面。听起来你的界面被恰当地定义了。