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

来了

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

另一个类定义了这样的方法:

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

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

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

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

ChiefTwo铅笔

根据的文档@FunctionalInterface,接口实现n个方法的事实并不意味着它不符合有效的接口的条件。这些方法的细节很重要。

从概念上讲,功能接口仅具有一种抽象方法。由于默认方法具有实现,因此它们不是抽象的。如果接口声明了一个覆盖java.lang.Object的公共方法之一的抽象方法,则该方法也不计入接口的抽象方法计数,因为该接口的任何实现都将具有java.lang.Object或其他地方的实现。(强调我的)

因此,这取决于所讨论的接口。听起来您的界面已正确定义。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章