功能接口作为参数相同

时间:2016-02-09 00:37:10

标签: lambda functional-programming java-8

在Java 8中练习lambdas时,我遇到了以下功能界面。

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

你能告诉我如何为这个功能界面提供lambda表达式吗?

2 个答案:

答案 0 :(得分:2)

与任何其他一个参数和void返回类型lambda:

的方式相同
MyFunctional f = myFunc -> {};

答案 1 :(得分:0)

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

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

  1. 功能名称。
  2. 传递的参数的类型和顺序。
  3. 返回功能类型。
  4. 但是传递lambda Java只会检查最后两个。因此,对于上面的功能接口,我们需要lambda,其中[first]参数类型为MyFunctional,返回类型为void。

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