函数式接口定义
仅包含一个抽象方法。
可以有标准和/或静态方法。
抽象方法没有指定实现。
MyValue 接口 {
double getValue();
}
提醒:在函数式接口中,抽象修饰符并不是明确需要的,因为 Java 假定任何在接口中没有实现的方法都自动是抽象的。
将 Lambda 分配给函数式接口
MyValue myVal = () -> 98.6;
lambda 的返回类型和参数必须与抽象方法兼容。
抽象方法调用:
System.out.println("常量值:" myVal.getValue());
结果:98.6。
带参数的函数接口
MyParamValue 接口 {
双 getValue(双 v);
}
计算倒数的 Lambda:
MyParamValue myPval = (n) -> 1.0 / n;
System.out.println("4的倒数是" myPval.getValue(4.0));
类型推断
由上下文推断的参数类型:
(n)-> 1.0/n; // 类型推断为 double
显式声明类型(可选):
(双n)-> 1.0 / n;
兼容性规则
(int x, int y) -> x y;
结论
函数式接口支持使用 lambda。
Lambda 表达式为抽象方法提供了简洁的实现。
目标类型上下文和类型兼容性对其使用至关重要。
以上是功能接口的详细内容。更多信息请关注PHP中文网其他相关文章!