ラムダ式の変数アクセスについて、以下のコードのように外側で宣言した変数へのアクセスがエラーになる場合があります。
実際に試してみた結果、オブジェクト自体を書き換えるものについてはエラーになり、オブジェクトを参照して値を追加・参照するものに関してはエラーにならないようです。(言い方が違ってたらすみません)
このような結果になるという事は分かったのですが、なんか腑に落ちないというか、どうしてこうなるのかが理解できないので、ご存じの方に説明して頂ければと思っています。
lang
1int count = 1; 2boolean flg = false; 3String str = "hoge"; 4List<String> userList = new ArrayList<>(); 5 6testList.forEach(ent -> { 7 count = count + 1; // エラー 8 flg = true; // エラー 9 str = "fuga"; // エラー 10 System.out.println(count); // 正常 11 userList.add("foo"); // 正常 12 userList = testList; // エラー 13});
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/13 15:29