当前位置: 首页 > 知识库问答 >
问题:

函数接口在lambda表达式中做什么?[副本]

白浩气
2023-03-14
@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个答案

宋臻
2023-03-14

函数接口在我的lambda表达式中做什么,因为只有一个简单的'double'?

函数接口表示采用泛型类型T返回double的函数,这意味着无论我们在哪里使用函数接口作为目标类型,最终都需要为其分配或传递一个满足其sam函数描述符的函数。因此,在您的示例中,findArea((x)->x+2,4,8)的第一个参数是传递给findArea方法的函数,可以被理解为“给定一个Double类型的数字,将数字2添加到它并返回结果”。

如果没有功能接口,会是什么样子?

 类似资料:
  • Java8同时引入了Lambda表达式和类型注释。 可以将lambda表达式强制转换为使用者,然后注释强制转换表达式的类型引用: 但这不会产生所需的结果,因为创建的使用者类不会用强制转换表达式的批注进行批注。产出: 两个问题: 但是注释参数对lambda表达式不起作用: 有趣的是,当使用lambda表达式时,也不可能接收参数的名称(当使用javac-parameter编译时)。不过,我不确定这种行

  • 在Java中lambda表达式是怎样的对象?作为函数式编程的一部分,lambda表达式如何在Java中实现,而Java是一种面向对象的语言?我需要哪些Java概念来理解lambda表达式?

  • 我有一个C语言函数要调用: 我有一个回调的静态类方法: 我可以这样调用函数: 但是,我现在必须将回调改为非静态,因为我必须创建多个< code>A对象。 但是我不能更改< code>f_api()的定义。 我尝试使用lambda: 但是这失败了,因为我不能把一个带有capture的lambda转换成一个简单的函数指针。 也不能做这项工作,因为定义。 我能做什么?如何从lambda表达式获取函数指针

  • 我知道使用lambda expression(LE)我们可以节省一些代码行,比如为函数接口创建对象。而且LE将更易读。但我确信这并不是提供该功能的主要原因。我在google上搜索,并在本文中找到了这段有趣的引用 在Java8之前,处理任何集合的元素都可以通过从集合中获取迭代器,然后迭代元素,然后处理每个元素来完成。如果需要并行处理这些元素,那么将由客户端代码完成。随着Java 8中Stream A

  • 用Java 8 lambdas到处乱搞。为什么当我向接口添加另一个方法时,这会给我一个错误: 不使用第二个方法也能正常工作:“public int getID(String name)

  • 编译时得到这个错误 意外标记(使用;分隔同一行的表达式) 柯特林 lambda 函数语法是否与 Java Lambda 表达式略有不同?