Lambda 函数接口作为相同的参数

Lambda 函数接口作为相同的参数,lambda,functional-programming,java-8,Lambda,Functional Programming,Java 8,在Java8中使用lambdas时,我遇到了下面的函数接口 @FunctionalInterface interface MyFunctional { void invokeSame(MyFunctional myFunc); } 您能告诉我如何为这个函数接口提供lambda表达式吗?与任何其他参数和无效返回类型lambda的方式相同: MyFunctional f = myFunc -> {}; 与任何其他一个参数和void返回类型lambda的方式相同: MyFunctiona

在Java8中使用lambdas时,我遇到了下面的函数接口

@FunctionalInterface
interface MyFunctional {
  void invokeSame(MyFunctional myFunc);
}

您能告诉我如何为这个函数接口提供lambda表达式吗?

与任何其他参数和无效返回类型lambda的方式相同:

MyFunctional f = myFunc -> {};

与任何其他一个参数和void返回类型lambda的方式相同:

MyFunctional f = myFunc -> {};

概念:java 8 lambdas中的类型检查是基于目标(作为参数传递给的函数)完成的

说明:通常函数由3个属性定义:

  • 函数名
  • 传递的参数的类型和顺序
  • 返回函数的类型
  • 但是当传递lambda时,Java只检查最后两个。因此,对于上面的函数接口,我们需要具有[first]参数类型MyFunctional和返回类型void的lambda

    void doSomething(MyFunctional x) {
    ...
    ...
      x.invokeSame(...An object/lambda of type MyFunctional...)
    }
    
    To call this function
    doSomething(varName -> { ...someCode... })
    

    概念:java 8 lambdas中的类型检查是基于目标(作为参数传递给的函数)完成的

    说明:通常函数由3个属性定义:

  • 函数名
  • 传递的参数的类型和顺序
  • 返回函数的类型
  • 但是当传递lambda时,Java只检查最后两个。因此,对于上面的函数接口,我们需要具有[first]参数类型MyFunctional和返回类型void的lambda

    void doSomething(MyFunctional x) {
    ...
    ...
      x.invokeSame(...An object/lambda of type MyFunctional...)
    }
    
    To call this function
    doSomething(varName -> { ...someCode... })