Lambda Expression用例和与功能接口的连接

Amn*_*oel 2 java java-8

我目前正在学习Java中的Lambda表达式.根据我的理解,它是一个代码块,我们可以传递,以便以后执行.但是当我们想要稍后执行代码时,我无法想到示例.

这有用的各种场景是什么?Lambda Expression和Functional接口之间的联系是什么?

i_a*_*ero 6

Lambda expression当我们想要稍后执行一次或多次代码块时使用A. 使用它的实际意义是deferred execution以后执行代码的原因有很多,例如:

  1. 我们想在单独的线程中运行代码.
  2. 我们想多次运行代码.
  3. 我们希望在算法中的特定点运行它,例如在排序时进行比较操作.
  4. 我们希望在某些事件发生时运行代码,例如点击链接等.
  5. 我们只想在必要时运行它等.

Lambda表达式和功能接口之间的连接

A Functional interface是一个只有一个abtract方法的接口(尽管它可以有多个默认方法).只要期望Functional Interafce的对象,我们就可以提供lambda表达式.考虑一个我们想要执行n次动作的示例.

execute(n, () -> System.out.println("Java Rocks"));
Run Code Online (Sandbox Code Playgroud)

要接受lambda,方法签名的第二个参数必须是Functional Interface,在上面的例子中我们可以使用例如Runnable.

public static void execute(int n, Runnable action) {
     for(int counter = 0; counter < n; counter ++) {
           action.run();
     }
}
Run Code Online (Sandbox Code Playgroud)

这里需要注意的是Lambda Expression在action.run()被调用时执行.您可以在此处阅读有关Lambda Expression的更多信息.