我有一个Java接口InterfaceA
,该接口定义了3个具有不同签名的方法(其中2个是默认签名)。
另一个类定义了这样的方法:
public void f(InterfaceA ia) {
.....
}
在单元测试中,这是如何使用的:
f((ArgA) -> return ArgA.write())
这怎么可能知道InterfaceA
定义了3种方法?
根据的文档@FunctionalInterface
,接口实现n个方法的事实并不意味着它不符合有效的接口的条件。这些方法的细节很重要。
从概念上讲,功能接口仅具有一种抽象方法。由于默认方法具有实现,因此它们不是抽象的。如果接口声明了一个覆盖java.lang.Object的公共方法之一的抽象方法,则该方法也不计入接口的抽象方法计数,因为该接口的任何实现都将具有java.lang.Object或其他地方的实现。(强调我的)
因此,这取决于所讨论的接口。听起来您的界面已正确定义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句