Perbezaan dan sambungan antara penutupan Java dan ungkapan lambda
May 01, 2024 pm 05:57 PMKedua-dua penutupan dan ungkapan lambda boleh menangkap pembolehubah tempatan dalam Java: penutupan boleh menangkap pembolehubah bebas, manakala ungkapan lambda hanya boleh menangkap pembolehubah akhir atau muktamad dengan berkesan. Pembolehubah bebas penutupan boleh diakses sepanjang hayatnya, manakala pembolehubah tangkapan ekspresi lambda hanya boleh diakses dalam Lambda. Pembolehubah bebas penutupan disimpan pada timbunan, manakala pembolehubah ditangkap ungkapan lambda disimpan pada timbunan. Ungkapan Lambda membuat penutupan dan penutupan boleh mengandungi ungkapan Lambda.
Perbezaan dan hubungan antara penutupan dan ungkapan Lambda dalam Java
Preface
Penutupan dan ungkapan Lambda adalah kedua-duanya teknologi yang sangat berguna dalam pengaturcaraan Java. Kedua-duanya boleh menangkap pembolehubah tempatan dan menyimpannya di luar skop. Walau bagaimanapun, terdapat beberapa perbezaan utama antara mereka.
Penutupan
Penutupan ialah fungsi yang menangkap pembolehubah yang diisytiharkan dalam persekitaran pelaksanaannya walaupun selepas meninggalkan persekitaran itu. Pembolehubah yang ditangkap ini dipanggil "pembolehubah bebas" penutupan.
Ekspresi Lambda
Ekspresi Lambda ialah fungsi tanpa nama yang dipermudahkan. Mereka boleh menerima parameter dan mengembalikan nilai. Ungkapan lambda juga boleh menangkap pembolehubah yang diisytiharkan dalam persekitaran pelaksanaannya, tetapi hanya jika pembolehubah tersebut akhir atau secara berkesan muktamad. . pembolehubah.
Skop: Pembolehubah bebas penutupan boleh diakses sepanjang hayatnya, walaupun selepas meninggalkan skop di mana ia ditakrifkan. Sebaliknya, pembolehubah tangkapan ungkapan lambda hanya boleh diakses dalam ungkapan lambda.
Pengurusan memori:- Pembolehubah bebas penutupan disimpan dalam timbunan, manakala pembolehubah ekspresi lambda yang ditangkap disimpan dalam timbunan. .
- Penutupan boleh mengandungi ungkapan Lambda: Penutupan boleh menyimpan ungkapan Lambda sebagai pembolehubah bebas.
- Kes praktikal
- Kes penutupan:
class OuterClass { private int x = 10; public void printX() { Runnable runnable = () -> System.out.println(x); // 闭包捕获自由变量 x runnable.run(); } }
class OuterClass { private final int x = 10; public void printX() { System.out.println(x); // Lambda 表达式可以使用 final 变量 } }
- Kesimpulan
- Kesimpulan dalam Javas dan Bothda yang berguna Memahami perbezaan dan hubungan antara mereka adalah penting untuk menulis kod yang cekap dan boleh diselenggara.
Atas ialah kandungan terperinci Perbezaan dan sambungan antara penutupan Java dan ungkapan lambda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cuti atau kembali dari Java 8 Stream Foreach?
