【发布时间】:2017-11-25 10:01:34
【问题描述】:
@FunctionalInterface
public interface myFunction<T> {
abstract double apply(T t);
}
以上代码是我的功能界面。
以下代码是我的 lambda 表达式。函数式接口在我的 lambda 表达式中做了什么,因为只有一个简单的“双精度”?如果没有功能界面,会是怎样的?
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) );
【问题讨论】:
-
您是在问
@FunctionalInterface注释的用途吗?还是您要求解释您的代码?我不明白你在问什么。另外,请尊重 Java 命名约定。类和接口用大写字母加星标。 -
我不明白为什么在函数式编程中必须有一个函数式接口,接口是做什么的。
-
在函数式编程中,不一定要有函数式接口。基本原理是将函数传递给其他函数。但是Java是一种面向对象的语言,并没有对函数的直接支持。虽然它支持接口。因此,Java 设计者选择使用具有单一方法的接口来表示函数类型。 lamda 表达式是这些功能接口的实例。其他函数式语言,例如 JavaScript 或 Kotlin,不需要这样的接口。他们可以只定义顶级函数并直接传递它们。你问的是这个吗?
-
因缺乏先前的研究而被否决。
标签: java lambda functional-programming