Ungkapan Lambda dalam Java8: Penggantian Kelas Tanpa Nama?
Dengan pengenalan ungkapan lambda dalam Java8, persoalan timbul: mempunyai tanpa nama kelas menjadi usang?
Ekspresi Lambda: Penyelesaian Ringkas
Ekspresi Lambda menyediakan sintaks yang padat dan mudah dibaca untuk mentakrifkan antara muka kaedah tunggal. Seperti yang dicontohkan oleh kaedah isihan Koleksi, ungkapan lambda menghapuskan keperluan untuk pelaksanaan Pembanding tanpa nama:
Collections.sort(personList, new Comparator<Person>() { public int compare(Person p1, Person p2){ return p1.firstName.compareTo(p2.firstName); } });
menjadi:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
Apabila Ungkapan Lambda Jatuh
Walaupun ringkas, ungkapan lambda mempunyai had. Ia hanya boleh digunakan dengan antara muka kaedah tunggal dan tidak boleh memberikan keadaan atau menentukan kaedah tambahan. Ini bermakna kelas tanpa nama kekal diperlukan untuk situasi di mana:
Faedah Ungkapan Lambda
Dalam skopnya, ungkapan lambda menawarkan kelebihan berbanding kelas tanpa nama:
Kesimpulan
Ekspresi Lambda tidak menggantikan kelas tanpa nama dalam Java8. Walaupun mereka menawarkan pintasan yang mudah untuk fungsi kaedah tunggal, kelas tanpa nama kekal penting untuk kes di mana keadaan, warisan atau kaedah tambahan diperlukan. Kedua-dua ciri wujud bersama untuk menyediakan penyelesaian yang fleksibel dan sesuai untuk senario berbeza dalam pengaturcaraan Java.
Atas ialah kandungan terperinci Adakah Ungkapan Lambda dalam Java 8 Menggantikan Kelas Tanpa Nama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!