java-ee - Ekspresi lambdas JAVA8 mengubah nilai pembolehubah luaran
天蓬老师
天蓬老师 2017-06-12 09:24:10
0
3
943


Seperti yang ditunjukkan dalam gambar, saya mentakrifkan etotalPrice secara luaran, dan kemudian cuba menukar nilai ini dalam dua untuk gelung, tetapi ralat telah dilaporkan kepada saya. Bagaimana untuk menyelesaikannya?
(NumberUtil.add dan mutiplyu ialah +*kaedah asas untuk mengekalkan 2 tempat perpuluhan)

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua(3)
仅有的幸福

Dalam buku klasik Java "Effective Java" dan "Java Concurrency in Practice", pakar menyebut bahawa rujukan pembolehubah dalam fungsi tanpa nama, juga dipanggil kebocoran rujukan berubah, boleh membawa kepada masalah keselamatan benang Oleh itu, sebelum Java8, jika Untuk merujuk fungsi pembolehubah tempatan di dalam kelas tanpa nama, ia mesti diisytiharkan muktamad, iaitu, objek tidak boleh diubah.

Java8 menambahkan gula sintaks di sini: dalam ungkapan lambda dan kelas tanpa nama, jika pembolehubah tempatan dirujuk, ia akan dianggap secara langsung sebagai muktamad.

Saya cadangkan anda memfaktorkan semula kod ini: gunakan lambda untuk mengembalikan nilai dan menetapkannya kepada pembolehubah luaran.

学霸

Ini bermakna jumlahHarga dalam ungkapan lambda hendaklah daripada jenis akhir Jenis akhir tidak boleh ditukar selepas ia dimulakan, jadi ia akan menjadi ralat untuk menetapkan nilai kepada totalPrice sekali lagi. Oleh itu, anda harus mentakrifkan semula pembolehubah untuk menyimpan nilai baharu dan bukannya menyalin nilai itu ke totalPrice sekali lagi Jika menukar pembolehubah tidak boleh dilakukan, jangan gunakan ungkapan lambda.

刘奇

Akhir, sudah tentu, tidak berubah. Jika anda mesti menukar, jangan gunakan lambda Jika anda menggunakan lambda, jangan ubah suai nilai

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan