为什么Java 8中的function接口有一个抽象方法?

正如我们在Java 8中所知,引入了function接口的概念。 function接口有一个abstract方法,可以使用多种默认或静态方法。

但为什么Functional接口只有一个抽象方法呢? 如果Interface有多个抽象方法,为什么这不是一个function接口?

引入了称为单抽象方法接口的function接口以促进Lambdafunction。 由于lambda函数只能提供1方法的实现,因此function接口必须只有一个抽象方法。 有关详细信息, 请参阅此处

编辑 – >另外值得注意的是,function界面可以在界面中具有默认实现。 您将在上面的链接中找到有关实施的更多详细信息。

function接口允许我们将一个对象称为一个函数,它允许我们在程序周围传递动词(函数)而不是名词(对象)。 function接口的实现执行单个明确定义的操作,因为任何方法都应该使用诸如运行,执行,执行,应用或其他一般动词之类的名称。[1]

  1. Scala和Clojure中的函数式编程模式。

编写Lamba表达式意味着我们正在实现作为function接口的接口。 它应该有一个抽象方法,因为在lambda表达式时,我们一次只能提供一个实现。 因此,在下面问题中发布的代码片段中,我们在任何时候只提供一个实现,同时声明Lambda,我们必须实现两个抽象方法。

为什么Java8中的Functional Interface中没有多个抽象方法?