Skip to content

深入学习 Lambda 表达式

Lambda 中的参数

自由变量:非参数且不在代码中定义的变量。

类似这样

java
public static void repeatMessage(String text,int delay){
  ActionListener listener=event->{
  System.out.println(text);
  Toolkit.getDefaultToolkit().beep();
  };
  new Timer(delay,listener).start();
  }

这里的代码表明,lambda表达式可以捕获外层作用域中的变量的值。而我们要确保所捕获的值是明确定义的,并且只能引用之不会改变的变量。

示例代码

java
import java.util.function.IntConsumer;

public class C627 {
  public static void main(String[] args) {
    repeat_Runnable(10, () -> {
      System.out.println("jyp不学习");
    });

    repeat_IntConsumer(10, i -> System.out.println("lyl不起床" + i));
  }

  public static void repeat_Runnable(int n, Runnable action) {
    for (int i = 0; i < n; i++) {
      action.run();
    }
  }

  public static void repeat_IntConsumer(int n, IntConsumer action) {
    for (int i = 0; i < n; i++) {
      action.accept(i);
    }
  }
}