1、合法引用外部变量
import javax.swing.*;
import java.awt.event.ActionListener;
public class App {
public static void repeatMessage(String text, int delay) {
ActionListener listener = event -> {
System.out.println(text);
};
new Timer(delay, listener).start();
}
public static void main(String[] args) {
App.repeatMessage("tangxin", 1000);
System.out.println("repeatMessage返回");
while(true);
}
}
2、非法引用外部变量(lambda改变)
当试图改变外部变量传递给text的值时,将会报错
3、非法引用外部变量(外部改变)
当引用的外部变量可能会被重新赋值时,也是非法的。
4、lambda表达式中不可出现同名局部变量
在lambda表达式中不可有同名的局部变量
5、lambda中使用this关键字
import javax.swing.*;
import java.awt.event.ActionListener;
public class App {
public void repeatMessage(String text, int delay) {
ActionListener listener = event -> {
System.out.println(text);
System.out.println(this.toString());
};
new Timer(delay, listener).start();
}
public static void main(String[] args) {
App text = new App();
text.repeatMessage("tangxin", 1000);
while(true);
}
}