Rumah > Java > javaTutorial > Mengapakah `Comparator.reversed()` Gagal dengan Ungkapan Lambda dalam Pengisihan Java?

Mengapakah `Comparator.reversed()` Gagal dengan Ungkapan Lambda dalam Pengisihan Java?

Barbara Streisand
Lepaskan: 2024-12-03 21:38:12
asal
566 orang telah melayarinya

Why Does `Comparator.reversed()` Fail with Lambda Expressions in Java Sorting?

Mengapa Comparator.reversed() Gagal dengan Lambdas

Apabila mengisih senarai objek Pengguna menggunakan Comparator.comparing dengan ungkapan lambda, ralat mungkin berlaku:

userList.sort(Comparator.comparing(u -> u.getName()).reversed()); // Compiler error
Salin selepas log masuk

Ini disebabkan oleh pengehadan dalam pengkompil jenis mekanisme inferens. Pengkompil bergelut untuk menentukan jenis argumen lambda 'u'.

Dalam contoh berikut, menggunakan rujukan kaedah membolehkan pengkompil membuat kesimpulan jenis sasaran dan mengelakkan ralat:

userList.sort(Comparator.comparing(User::getName).reversed()); // works
Salin selepas log masuk

Rujukan kaedah menyediakan maklumat jenis tambahan, yang digunakan oleh pengkompil untuk membuat kesimpulan jenis 'u' sebagai Pengguna.

Untuk mengelakkan ralat semasa menggunakan a lambda, anda boleh menyatakan secara eksplisit jenis hujah lambda:

userList.sort(Comparator.comparing((User u) -> u.getName()).reversed());
Salin selepas log masuk

Dalam keluaran pengkompil akan datang, isu ini mungkin ditangani dan ralat mungkin tidak berlaku lagi.

Atas ialah kandungan terperinci Mengapakah `Comparator.reversed()` Gagal dengan Ungkapan Lambda dalam Pengisihan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan