Rujukan kaedah dalam Java menyediakan cara ringkas untuk merujuk kepada kaedah tanpa menggunakan kaedah tersebut. Ia adalah sebahagian daripada ciri ungkapan lambda yang diperkenalkan dalam Java 8, direka untuk memudahkan sintaks dan meningkatkan kebolehbacaan kod. Rujukan kaedah amat berguna dalam pengaturcaraan berfungsi, di mana fungsi dianggap sebagai warga kelas pertama.
Rujukan kaedah ialah tatatanda singkatan untuk ungkapan lambda yang memanggil kaedah. Ia membolehkan anda merujuk kepada kaedah tanpa menggunakan kaedah tersebut, menjadikan kod lebih mudah dibaca dan kurang bertele-tele. Rujukan kaedah boleh digunakan dalam pelbagai konteks, seperti antara muka berfungsi, strim dan koleksi.
Rujukan kaedah menawarkan beberapa kelebihan:
?Kebolehbacaan Dipertingkat: Mereka menjadikan kod lebih ringkas dan lebih mudah difahami.
?Kod Boilerplate Dikurangkan: Rujukan kaedah menghapuskan keperluan untuk kelas dalaman tanpa nama atau ungkapan lambda verbose.
?Peningkatan Prestasi: Ia boleh membawa kepada pelaksanaan kod yang lebih cekap disebabkan pengurangan overhed.
Menurut tinjauan oleh Java Community Process (JCP), lebih 70% pembangun melaporkan peningkatan kebolehbacaan dan kebolehselenggaraan kod selepas menggunakan rujukan kaedah.
Java menyokong empat jenis rujukan kaedah, setiap satu mempunyai tujuan tertentu:
Rujukan kaedah statik digunakan untuk merujuk kepada kaedah statik. Sintaksnya ialah:
ClassName::staticMethodName
Contoh:
import java.util.Arrays; import java.util.List; public class StaticMethodReferenceExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.forEach(System.out::println); } }
Dalam contoh ini, System.out::println ialah rujukan kaedah statik. Ia merujuk kepada kaedah println kelas PrintStream, yang merupakan ahli statik kelas Sistem.
Rujukan kaedah contoh digunakan untuk merujuk kepada kaedah contoh objek tertentu. Sintaksnya ialah
objectReference::instanceMethodName
Contoh:
import java.util.Arrays; import java.util.List; public class InstanceMethodReferenceExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.sort(String::compareToIgnoreCase); names.forEach(System.out::println); } }
Di sini, String::compareToIgnoreCase ialah rujukan kaedah contoh. Ia merujuk kepada kaedah compareToIgnoreCase bagi kelas String.
Rujukan pembina digunakan untuk merujuk kepada pembina. Sintaksnya ialah
ClassName::new
Contoh:
import java.util.function.Supplier; public class ConstructorReferenceExample { public static void main(String[] args) { Supplier<String> supplier = String::new; String str = supplier.get(); System.out.println(str); } }
Dalam contoh ini, String::new ialah rujukan pembina. Ia merujuk kepada pembina kelas String.
Rujukan kaedah objek arbitrari digunakan untuk merujuk kepada kaedah contoh objek arbitrari jenis tertentu. Sintaksnya ialah
ClassName::staticMethodName
Contoh:
import java.util.Arrays; import java.util.List; public class StaticMethodReferenceExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.forEach(System.out::println); } }
Di sini, String::compareToIgnoreCase ialah rujukan kaedah objek arbitrari. Ia merujuk kepada kaedah compareToIgnoreCase kelas String, tetapi ia boleh digunakan pada mana-mana objek String.
Rujukan kaedah digunakan secara meluas dalam pelbagai senario, seperti:
API Streams, yang diperkenalkan dalam Java 8, menyediakan cara yang berkuasa untuk memproses jujukan unsur. Rujukan kaedah sering digunakan dengan strim untuk melaksanakan operasi seperti penapisan, pemetaan dan pengurangan.
objectReference::instanceMethodName
Dalam contoh ini, String::toUpperCase ialah rujukan kaedah yang digunakan dengan operasi peta untuk menukar setiap nama kepada huruf besar.
Antara muka berfungsi ialah antara muka dengan kaedah abstrak tunggal. Rujukan kaedah boleh digunakan untuk menyediakan pelaksanaan bagi antara muka ini.
import java.util.Arrays; import java.util.List; public class InstanceMethodReferenceExample { public static void main(String[] args) { List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); names.sort(String::compareToIgnoreCase); names.forEach(System.out::println); } }
Di sini, String::length ialah rujukan kaedah yang digunakan untuk menyediakan pelaksanaan bagi antara muka Fungsi.
Rujukan kaedah sering digunakan dengan Rangka Kerja Koleksi untuk melaksanakan operasi seperti menyusun, menapis dan mengubah koleksi.
ClassName::new
Dalam contoh ini, String::compareToIgnoreCase ialah rujukan kaedah yang digunakan untuk mengisih senarai nama.
Untuk memanfaatkan rujukan kaedah sepenuhnya, ikuti amalan terbaik ini:
Gunakan Rujukan Kaedah untuk Ungkapan Lambda Mudah: Rujukan kaedah paling berkesan apabila ungkapan lambda adalah ringkas dan mudah.
Elakkan Penggunaan Berlebihan: Walaupun rujukan kaedah boleh menjadikan kod lebih ringkas, penggunaan berlebihan boleh menjadikan kod lebih sukar dibaca. Gunakannya dengan bijak.
Pilih Rujukan Kaedah Daripada Kelas Dalaman Tanpa Nama: Rujukan kaedah lebih ringkas dan boleh dibaca daripada kelas dalaman tanpa nama.
Manfaatkan Sokongan IDE: IDE moden seperti IntelliJ IDEA dan Eclipse menyediakan sokongan untuk menukar ungkapan lambda kepada rujukan kaedah dan sebaliknya. Gunakan alatan ini untuk memfaktorkan semula kod anda.
Pakar dalam komuniti Java telah memuji pengenalan rujukan kaedah untuk keupayaan mereka untuk memudahkan kod dan meningkatkan kebolehbacaan.
"Rujukan kaedah ialah pengubah permainan untuk pembangun Java. Ia membolehkan kami menulis kod yang lebih ekspresif dan ringkas, menjadikan program kami lebih mudah dibaca dan diselenggara."
"Penambahan rujukan kaedah dalam Java 8 telah meningkatkan dengan ketara cara kami menulis kod berfungsi. Ia adalah ciri hebat yang harus dikuasai oleh setiap pembangun Java."
Joshua Bloch, Pengarang "Jawa Berkesan"
Rujukan kaedah dalam Java ialah alat berkuasa yang boleh meningkatkan kebolehbacaan dan kecekapan kod anda dengan ketara. Dengan memahami pelbagai jenis rujukan kaedah dan aplikasi praktikalnya, anda boleh menulis kod yang lebih ringkas dan ekspresif. Sama ada anda bekerja dengan strim, antara muka berfungsi atau koleksi, rujukan kaedah menawarkan pendekatan yang diperkemas kepada pengaturcaraan berfungsi dalam Java.
Mula memasukkan rujukan kaedah ke dalam kod anda hari ini. Eksperimen dengan pelbagai jenis rujukan kaedah dan lihat cara ia boleh memudahkan program anda. Kongsi pengalaman dan pandangan anda dengan komuniti Java, dan teruskan meneroka ciri hebat Java 8 dan seterusnya.
Sebarang pembetulan atau penambahan pada siaran ini dialu-alukan.
Terima kasih kerana Membaca!
ClassName::staticMethodName
Atas ialah kandungan terperinci Rujukan Kaedah dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!