Rumah >Java >javaTutorial >Apakah Perbezaan Antara Pembolehubah `akhir` dan Pembolehubah Akhir Berkesan dalam Java Lambdas?
Akhir lwn. Akhir Berkesan dalam Java Lambdas
Apabila menggunakan lambdas dalam Java 8, pembangun mungkin menghadapi amaran "pembolehubah tempatan yang dirujuk daripada ungkapan lambda mestilah muktamad atau muktamad berkesan." Memahami perbezaan antara kedua-dua konsep ini adalah penting untuk menggunakan lambda dengan betul.
Akhir
Pembolehubah yang diisytiharkan sebagai muktamad tidak boleh ditetapkan semula selepas pemulaan. Ini memastikan kebolehubahan pembolehubah, menghalang potensi ketidakkonsistenan dan ralat. Dalam konteks lambda, pembolehubah akhir menjamin bahawa pembolehubah tersebut kekal konsisten sepanjang pelaksanaan lambda.
Secara berkesan Akhir
Pembolehubah yang tidak diisytiharkan muktamad secara eksplisit tetapi nilainya kekal tidak berubah selepas permulaan dianggap "secara muktamad dengan berkesan." Ini bermakna walaupun pembolehubah itu tidak muktamad secara teknikal, ia berkelakuan sedemikian dalam amalan. Untuk lambda, pembolehubah yang tidak ditetapkan semula dalam skop lambda dianggap muktamad dengan berkesan.
Contoh
Pertimbangkan coretan kod berikut:
int numberLength; // Not final class PhoneNumber { PhoneNumber(String phoneNumber) { numberLength = 7; // Assigning to numberLength // ... } }
Dalam contoh ini, bilangan pembolehubahLength tidak diisytiharkan muktamad. Walau bagaimanapun, kerana ia tidak pernah ditetapkan semula dalam pembina PhoneNumber, ia adalah muktamad. Oleh itu, ia boleh diakses dengan selamat oleh ungkapan lambda dalam pembina.
Ralat Penyusun
Jika numberLength akan ditugaskan semula dalam pembina, ia tidak lagi muktamad secara berkesan. Ini akan mengakibatkan ralat pengkompil apabila mengaksesnya daripada ungkapan lambda, serupa dengan:
local variables referenced from a lambda expression must be final or effectively final
Kesimpulan
Memahami perbezaan antara muktamad dan muktamad secara berkesan adalah penting untuk penggunaan lambda yang betul di Jawa. Pembolehubah akhir memberikan kebolehubahan, manakala pembolehubah akhir secara berkesan memastikan pembolehubah kekal tidak berubah dalam skop lambda. Dengan mematuhi konsep ini, pembangun boleh mengelakkan kemungkinan ralat dan menulis kod yang mantap dan boleh dipercayai menggunakan lambdas.
Atas ialah kandungan terperinci Apakah Perbezaan Antara Pembolehubah `akhir` dan Pembolehubah Akhir Berkesan dalam Java Lambdas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!