Rumah  >  Artikel  >  Java  >  Mengapa Pembolehubah Tempatan Perlu Akhir dalam Lambdas, Tetapi Pembolehubah Instance Tidak?

Mengapa Pembolehubah Tempatan Perlu Akhir dalam Lambdas, Tetapi Pembolehubah Instance Tidak?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 20:54:31888semak imbas

Why Do Local Variables Need to Be Final in Lambdas, But Instance Variables Don't?

Mengapa Pembolehubah Tempatan Memerlukan Kemuktamadan dalam Lambdas, tetapi Pembolehubah Instance Tidak

Apabila bekerja dengan lambdas, anda mungkin menghadapi peraturan bahawa setempat pembolehubah perlu diisytiharkan sebagai muktamad dalam skop lambda. Walau bagaimanapun, pembolehubah contoh tidak memerlukan kelayakan ini. Perbezaan ini berpunca daripada perbezaan asas antara kedua-dua jenis pembolehubah dalam konteks lambda.

Pembolehubah setempat dalam lambda disalin dengan berkesan ke dalam lambda apabila ia diinstakan oleh JVM. Ini bermakna bahawa sebarang perubahan yang dibuat kepada pembolehubah tempatan dalam lambda tidak menjejaskan pembolehubah asal dalam skop yang disertakan. Oleh itu, untuk mengelakkan pengubahsuaian yang tidak disengajakan dan memastikan kebolehubahan, pembolehubah tempatan mesti diisytiharkan sebagai muktamad.

Sebaliknya, pembolehubah contoh ditakrifkan dalam kelas yang disertakan dan dirujuk terus oleh lambda. Apabila perubahan dibuat pada pembolehubah contoh dalam lambda, ia disebarkan kepada contoh kelas yang disertakan. Ini kerana skop pembolehubah contoh meluas ke seluruh kelas yang disertakan.

Untuk meringkaskan, pembolehubah tempatan memerlukan kemuktamadan dalam lambdas kerana ia pada asasnya disalin semasa instantiasi lambda, manakala pembolehubah contoh tidak kerana ia mengekalkan identiti dan skop dalam kelas yang disertakan.

Atas ialah kandungan terperinci Mengapa Pembolehubah Tempatan Perlu Akhir dalam Lambdas, Tetapi Pembolehubah Instance Tidak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn