今回はラムダ内での変数の扱いについてです。違いもあわせて調べてみました。【変数の参照】メソッドのパラメータ、ローカル変数、ラムダのパラメータの参照について見てみます。}}メソッドパラメータ(param)、ローカル変数(variableValue)、ラムダのパラメータ(lambdaParam)は参照することができます。ラムダ内で参照している変数は変更することはできません。変更するコードを書くとエラーになります。ここは匿名クラスと同じっぽいです。同名の変数があった場合の扱いです。}}ラムダの場合、パラメータとラムダ外で定義した変数の名前がかぶっている場合はエラーになります。匿名クラスの場合、匿名クラス内のメソッドのパラメータが優先されるのでエラーになりません。最後にラムダ・匿名クラス内でのthisの扱いについてです。}}thisは問題なく参照できます。[実行結果]hoge.Samplehoge.Sample$2匿名クラスの場合はコンパイル時にクラスが作成されて、ラムダはコンパイル時には作成されずに実行されるようです。($2になっているのはexecuteInnerClass02のサンプルで一つ作成しているからです)【いろいろ書いたけど】ラムダの変数の扱いと匿名クラスでのスコープの違いを調べてみました。ラムダ内では受け取ったパラメータのみを扱うようにした方がシンプルで混乱もなくて良いと思います。今回調べたのは念のためと言うことで。月別アーカイブはてなブログをはじめよう!gloryofさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。