Rumah >Java >javaTutorial >Adakah fungsi Java menyokong penutupan? Bagaimana untuk melaksanakan penutupan?
Java tidak menyokong penutupan sebenar, tetapi ia boleh disimulasikan melalui kelas dalaman tanpa nama. Penutupan dalam kelas dalaman tanpa nama boleh mengakses pembolehubah luaran walaupun fungsi yang menciptanya telah keluar, tetapi pembolehubah luaran tidak boleh diisytiharkan atau diubah suai di luar fungsi dan ungkapan lambda tidak boleh menangkap pembolehubah luaran secara langsung.
Penutupan ialah fungsi yang mempunyai akses kepada pembolehubah yang ditakrifkan dalam fungsi yang menciptanya. Penutupan masih boleh mengakses pembolehubah ini walaupun fungsi yang menciptanya telah selesai dilaksanakan.
Java tidak menyokong penutupan sebenar. Walau bagaimanapun, dengan menggunakan kelas dalaman tanpa nama kita boleh mensimulasikan tingkah laku penutupan.
Pertimbangkan coretan kod berikut:
public class LambdaClosure { public static void main(String[] args) { int x = 10; Runnable closure = () -> System.out.println(x); // 调用闭包 closure.run(); } }
Dalam kes ini:
main()
tengah kaedah. x
是一个局部变量,它被定义在 main()
方法中。Runnable
被用来创建闭包。closure
访问了外部变量 x
,即使 main()
closure
mengakses pembolehubah luaran x
walaupun kaedah main()
telah keluar. Pembolehubah luaran boleh ditangkap dalam kelas dalaman tanpa nama.
Atas ialah kandungan terperinci Adakah fungsi Java menyokong penutupan? Bagaimana untuk melaksanakan penutupan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!