ホームページ >Java >&#&チュートリアル >Java関数はクロージャをサポートしていますか?クロージャを実装するにはどうすればよいですか?
Java は真のクロージャをサポートしていませんが、匿名の内部クラスを通じてシミュレートできます。匿名内部クラスのクロージャは、それを作成した関数が終了した場合でも外部変数にアクセスできますが、外部変数を関数の外で宣言または変更することはできず、ラムダ式は外部変数を直接キャプチャすることはできません。
クロージャは、定義された変数を作成した関数にアクセスできる関数です。で。クロージャは、クロージャを作成した関数の実行が終了した場合でも、引き続きこれらの変数にアクセスできます。
Java は、実際のクロージャをサポートしません。ただし、匿名の内部クラスを使用すると、クロージャの動作をシミュレートできます。
次のコード スニペットを考えてみましょう:
public class LambdaClosure { public static void main(String[] args) { int x = 10; Runnable closure = () -> System.out.println(x); // 调用闭包 closure.run(); } }
この場合:
xx
はローカル変数です。これは main()
メソッドで定義されます。 Runnable
はクロージャの作成に使用されます。 closure
main()
メソッドが終了したにもかかわらず、外部変数 x
にアクセスしました。 モック クロージャの利点は次のとおりです。
制限事項は次のとおりです。
以上がJava関数はクロージャをサポートしていますか?クロージャを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。