函数接口在lambda表达式中做了什么?

时间:2017-11-25 10:01:34

标签: java lambda functional-programming

@FunctionalInterface
public interface myFunction<T> {
  abstract double apply(T t);
}

上面的代码是我的功能界面。

以下代码是我的lambda表达式。函数接口在我的lambda表达式中做了什么,因为只有一个简单的“double”?如果没有功能界面,那会是什么样的?

import java.util.HashSet;

public class TestFindArea {
public static double findArea(myFunction<Double> f,double a,double b){
    return (f.apply(a)+f.apply(b))*(b-a)/2;
}
    public static void main(String[] args) {
        System.out.println(findArea((x) -> x+2 , 4, 8) );

1 个答案:

答案 0 :(得分:0)

  

功能界面在我的lambda表达式中的作用是什么   只是一个简单的双重&#39;?

你的功能接口代表一个函数,它采用泛型类型T并返回一个double,这意味着无论我们将函数接口用作目标类型,最终我们都需要为其分配或传递一个满足的函数其SAM的函数描述符。因此,在您的情况下,findArea((x) -> x+2 , 4, 8)的第一个参数是传递给findArea方法的函数,可以读作&#34;给定多个类型Double,添加数字2到它并返回结果&#34;

  

如果没有功能界面,会有什么样的?

然后你不能将函数作为参数传递给其他函数,也不能将函数用作其他函数的返回类型,也不能将lambda表达式赋给接口。