Ungkapan Lambda: Kemusnahan Kelas Tanpa Nama di Java8?
Dengan pengenalan ungkapan lambda dalam Java8, persoalan timbul mengenai nasib tanpa nama kelas. Walaupun lambdas menawarkan sintaks ringkas untuk antara muka kaedah tunggal, terdapat kes penggunaan di mana kelas tanpa nama kekal berfaedah.
Perbandingan Antara Ungkapan Lambda dan Kelas Tanpa Nama
Ekspresi Lambda ialah terhad kepada melaksanakan antara muka dengan kaedah abstrak tunggal. Mereka menyediakan cara yang ringkas dan boleh dibaca untuk mentakrifkan satu tindakan, seperti yang dilihat dalam contoh menyusun senarai orang:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
Sebaliknya, kelas tanpa nama, boleh digunakan untuk pelbagai tujuan:
Sebagai contoh, kelas tanpa nama boleh digunakan untuk mentakrifkan antara muka Pembanding dengan keadaan atau fungsi tambahan:
Comparator<Person> comparator = new Comparator<Person>() { private int maxAge; public int compare(Person p1, Person p2) { if (p1.age == p2.age) return p1.firstName.compareTo(p2.firstName); else return p1.age - p2.age; } };
Kelebihan Kelas Tanpa Nama
Kelebihan Lambda Expressions
Kesimpulan
Sementara ungkapan lambda menyediakan alternatif yang menarik untuk antara muka kaedah tunggal, kelas tanpa nama kekal berharga untuk senario di mana berbilang kaedah, mengatasi atau pengurusan keadaan diperlukan. Pembangun Java harus memilih teknik yang sesuai berdasarkan keperluan khusus dan pertukaran yang terlibat.
Atas ialah kandungan terperinci Adakah Kelas Tanpa Nama Lapuk di Java 8 dengan Pengenalan Ungkapan Lambda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!