上級 › ラムダの変数はfinal/実質finalが必要という原因と直し方 › パターン4
ラムダの変数はfinal/実質finalが必要という原因と直し方
ラムダが参照するローカル変数は再代入できません。
1 import java.util.List; 2 3 public class Main { 4 public static void main(String[] args) { 5 for (int n : List.of(1, 2, 3)) { 6 __________ ^ 7 Runnable r = () -> System.out.println(n); 8 r.run(); 9 } 10 } 11 }
Main.java:7: error: local variables referenced from a lambda expression must be final or effectively final
空欄を埋めてビルドを通す
forループの中でnに一度でも再代入すると、実質finalではなくなりラムダから参照できなくなります。
次の問題