ホームページ >Java >&#&チュートリアル >ラムダ式と変数のキャプチャ
含まれるスコープ内の変数へのアクセス
ローカル変数へのアクセス
変更制限
変更できません:
インスタンス変数の変更
ラムダ式では次のことができます:
例: 外部スコープからローカル変数を取得する
コード:
interface MyFunc { int func(int n); } class VarCapture { public static void main(String args[]) { // Variável local que pode ser capturada int num = 10; MyFunc myLambda = (n) -> { // Uso correto da variável num int v = num + n; // A instrução abaixo é inválida porque tenta modificar num // num++; return v; }; // Usando a expressão lambda System.out.println(myLambda.func(8)); // Exibe: 18 // Modificar num aqui também causaria erro // num = 9; } }
説明:
キャプチャ数:
num は、最初の割り当て後に変更されないため、事実上最終的なものとなります。
Lambda は num にアクセスできますが、変更することはできません。
実行:
myLambda.func(8) は 18 を返します。理由:
num (10) がパラメーター n (8) に加算され、18 が生成されます。
変更によるエラー:
num または num = 9 のコメントを解除すると、キャプチャが無効になり、コンパイル エラーが発生します。
注:
重要: インスタンス変数または静的変数は、ラムダ式内で制限なく使用および変更できます。
制限は外部スコープのローカル変数にのみ適用されます。
以上がラムダ式と変数のキャプチャの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。