Java のクロージャを使用すると、外部関数が終了した場合でも、内部関数が外部スコープ変数にアクセスできます。匿名の内部クラスを通じて実装されると、内部クラスは外部クラスへの参照を保持し、外部変数をアクティブに保ちます。クロージャによりコードの柔軟性が向上しますが、匿名の内部クラスによる外部変数への参照により、それらの変数が存続するため、メモリ リークのリスクに注意する必要があります。
Java でのクロージャの実装
Java では、クロージャはアクセス許可関数を備えた囲みスコープ変数です。クロージャは、外部関数が終了した場合でも、外部変数への参照を保持することによって実装されます。これにより、内部関数が外部環境に対して状態を保持できるようになり、より柔軟で再利用可能なコードが作成されます。
実装方法
Java のクロージャは、匿名の内部クラスを通じて実装されます。匿名の内部クラスが外部変数にアクセスすると、外部クラスへの参照が保存されるため、外部変数は維持されます。
// 定义外部类 public class Outer { private int x = 10; // 创建一个闭包 public Runnable createClosure() { // 匿名内部类定义了闭包 return new Runnable() { @Override public void run() { System.out.println("x: " + x); } }; } }
実用的なケース
次のコードは、Java でのクロージャーの使用を示しています。
public class Main { public static void main(String[] args) { Outer outer = new Outer(); // 创建闭包 Runnable closure = outer.createClosure(); // 外部变量 x 的值已更改 outer.x = 20; // 即使外部函数退出,闭包仍然可以访问外部变量 closure.run(); // 打印 "x: 20" } }
出力:
x: 20
クロージャの影響を理解する
以上がJava ではクロージャはどのように実装されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。