既成事实上的final是指只能给该变量赋值一次。换句话说,Lambda表达式引用的是值,而不是变量。
Lambda表达式中引用既成事实的final变量:
Stringname = getUserName();
button.addActionListener(event -> System.out.println("hi " +name);
未使用既成事实的final变量,导致无法通过编译:
Stringname = getUserName();
name = formatUserName(name);
button.addActionListener(event -> System.out.println("hi " +name);
网友评论