Penutupan dalam Java membolehkan fungsi dalaman mengakses pembolehubah skop luar, walaupun fungsi luar telah keluar. Dilaksanakan melalui kelas dalaman tanpa nama, kelas dalam memegang rujukan kepada kelas luar dan memastikan pembolehubah luar aktif. Penutupan meningkatkan fleksibiliti kod, tetapi anda perlu sedar tentang risiko kebocoran memori kerana rujukan kepada pembolehubah luaran oleh kelas dalaman tanpa nama memastikan pembolehubah tersebut hidup.
Pelaksanaan penutupan dalam Java
Di Java, penutupan ialah fungsi yang mempunyai akses kepada pembolehubah skop tertutup. Penutupan dilaksanakan dengan memegang rujukan kepada pembolehubah luaran walaupun fungsi luaran telah keluar. Ini membolehkan fungsi dalaman mengekalkan keadaan kepada persekitaran luaran, mewujudkan kod yang lebih fleksibel dan boleh digunakan semula.
Kaedah pelaksanaan
Penutupan di Java dilaksanakan melalui kelas dalaman tanpa nama. Apabila kelas dalam tanpa nama mengakses pembolehubah luar, ia menyimpan rujukan kepada kelas luar, dengan itu mengekalkan pembolehubah luar hidup.
// 定义外部类 public class Outer { private int x = 10; // 创建一个闭包 public Runnable createClosure() { // 匿名内部类定义了闭包 return new Runnable() { @Override public void run() { System.out.println("x: " + x); } }; } }
Kes praktikal
Kod berikut menunjukkan penggunaan penutupan dalam 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" } }
Output:
x: 20
Fahami kesan penutupan
keadaan kebolehekspanan boleh meningkatkan kod dikekalkan dan dihantar merentasi panggilan fungsi.Atas ialah kandungan terperinci Bagaimanakah penutupan dilaksanakan di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!