Rumah  >  Soal Jawab  >  teks badan

java-ee - Ekspresi lambdas JAVA8 mengubah nilai pembolehubah luaran


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)

天蓬老师天蓬老师2656 hari yang lalu904

membalas semua(3)saya akan balas

  • 仅有的幸福

    仅有的幸福2017-06-12 09:26:10

    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.

    balas
    0
  • 欧阳克

    欧阳克2017-06-12 09:26:10

    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.

    balas
    0
  • 怪我咯

    怪我咯2017-06-12 09:26:10

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

    balas
    0
  • Batalbalas