Rumah  >  Artikel  >  Java  >  Bolehkah Ungkapan Lambda Dibandingkan untuk Kesaksamaan di Jawa?

Bolehkah Ungkapan Lambda Dibandingkan untuk Kesaksamaan di Jawa?

Linda Hamilton
Linda Hamiltonasal
2024-10-31 04:16:01903semak imbas

Can Lambda Expressions Be Compared for Equality in Java?

Bolehkah Fungsi Lambda Dibandingkan?

Soalan:

Di Jawa, apabila menggunakan ungkapan lambda, adakah terdapat cara untuk membandingkan mereka untuk kesaksamaan?

Jawapan:

Dari Perspektif Spesifikasi:

Spesifikasi bahasa hanya menjamin bahawa menilai ungkapan lambda akan menghasilkan contoh kelas yang melaksanakan antara muka fungsi sasaran. Walau bagaimanapun, ia tidak memberikan jaminan tentang identiti atau pengalianan kejadian ini.

Dari Perspektif Pelaksanaan:

Pelaksanaan Java semasa mewujudkan hubungan 1:1 antara sintetik kelas yang digunakan untuk melaksanakan lambdas dan tapak tangkapannya. Jika lambda yang sama dinilai di tapak tangkapan yang sama tanpa menangkap sebarang pembolehubah, tika yang sama dihasilkan dan boleh dibandingkan menggunakan kesamaan rujukan (==).

Untuk lambda boleh bersiri, keadaan mereka boleh diperoleh dengan mudah, tetapi pada kos penurunan prestasi dan keselamatan.

Cabaran dengan Komprehensif Kesaksamaan:

Secara amnya tidak boleh dilakukan untuk menentukan sama ada dua lambda dengan antara muka berfungsi dan fungsi gelagat yang sama adalah sama kerana:

  • Lambda yang tidak boleh bersiri mungkin tidak mendedahkan semua mereka komponen untuk perbandingan.
  • Fail yang disusun secara berasingan boleh menukar lambda yang sama kepada jenis antara muka berfungsi yang sama, menjadikan perbandingan tidak praktikal.

Keupayaan dan Had Semasa:

Rujukan kaedah mungkin mempunyai takrifan kesaksamaan yang boleh disesuaikan pada masa hadapan untuk membolehkan penggunaannya sebagai pendengar.

Kumpulan Pakar Java mempertimbangkan untuk mendedahkan maklumat untuk lebih selektif equals/hashCode dan kaedah deskriptif toString untuk lambdas. Walau bagaimanapun, mereka membuat keputusan untuk menentangnya kerana potensi kesan prestasi ke atas majoriti pengguna.

Dari segi toString, tiada kesimpulan yang pasti dicapai, tetapi hujah telah dibuat untuk kedua-dua pihak, meninggalkan kemungkinan untuk menyemak semula isu ini pada masa hadapan.

Atas ialah kandungan terperinci Bolehkah Ungkapan Lambda Dibandingkan untuk Kesaksamaan di Jawa?. 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