Rumah >Java >javaTutorial >Ralat Java: Ralat Rujukan Kaedah Java8, Cara Mengendalikan dan Mengelak
Apabila pembangunan Java terus berkembang, semakin banyak kod dirujuk menggunakan kaedah Java8. Walau bagaimanapun, apabila menggunakan rujukan kaedah Java8, pembangun mungkin menghadapi beberapa ralat seperti kelas tidak ditemui, bilangan parameter kaedah yang tidak sepadan, atau bahkan NullPointerException. Dalam artikel ini, kami akan meneroka punca ralat rujukan kaedah Java 8 dan menyediakan beberapa penyelesaian serta petua untuk membantu anda mengelakkan dan menangani masalah ini.
1. Penggunaan rujukan kaedah yang salah
Dalam Java8, rujukan kaedah membenarkan pembangun menggunakan simbol "::" untuk mengakses kaedah atau pembina. Penggunaan rujukan kaedah yang salah adalah punca biasa kesilapan. Contohnya, dalam contoh berikut:
List<Integer> list = Arrays.asList(1, 2, 3); list.stream().map(Integer.toString)
Dalam contoh ini, pembangun mungkin telah cuba menggunakan rujukan kaedah untuk menukar integer kepada rentetan, tetapi tersilap menulis "Integer.toString" dan bukannya "Integer::toString".
Penyelesaian: Sila pastikan bahawa rujukan kaedah digunakan dengan betul, dan nama kaedah serta parameter kaedah sepadan dengan nama kaedah dan parameter yang dirujuk. Semak dokumentasi dan baca dengan teliti contoh dan arahan untuk menggunakan rujukan kaedah dalam dokumentasi API Java8.
2. Ralat kelas tidak ditemui
Apabila menggunakan rujukan kaedah, anda mungkin menghadapi situasi di mana kelas tidak ditemui. Contohnya, dalam contoh berikut:
List<String> list = Arrays.asList("a", "b", "c"); list.stream().map(StringUtils::upperCase);
Jika kelas StringUtils tiada dalam pakej semasa, ralat kelas tidak ditemui akan berlaku.
Penyelesaian: Pastikan kelas yang digunakan untuk rujukan kaedah tersedia dalam laluan kelas dan menggunakan nama yang betul. Anda boleh menambah kelas yang diperlukan pada kebergantungan projek atau menggunakan pakej penuh dan nama kelas untuk menyelesaikan masalah ini.
3. Ketakpadanan parameter kaedah
Apabila menggunakan rujukan kaedah, anda juga mungkin menghadapi masalah ketidakpadanan dalam bilangan parameter kaedah. Contohnya, dalam contoh berikut:
List<Integer> list = Arrays.asList(1, 2, 3); list.stream().map(Number::format);
Dalam contoh ini, kelas Nombor tidak mempunyai kaedah statik tanpa parameter bernama format. Masalahnya di sini ialah fungsi "peta" menjangkakan fungsi yang menerima satu parameter, dan setiap elemen dalam aliran data dihantar ke fungsi sebagai parameter, tetapi kaedah format kelas Nombor mengambil parameter.
Penyelesaian: Pastikan kaedah yang digunakan mempunyai senarai parameter yang betul. Jika perlu, anda boleh mencipta kaedah baharu untuk memadankan bilangan argumen yang dijangkakan dan memanggilnya menggunakan rujukan kaedah.
4.Ralat NullPointerException
Dalam Java8, NullPointerException mungkin dilemparkan apabila rujukan objek adalah batal apabila ungkapan lambda atau rujukan kaedah digunakan. Contohnya, dalam contoh berikut:
List<String> list = null; list.stream().map(String::toUpperCase);
Dalam kes ini, panggilan kaedah list.stream() akan membuang NullPointerException kerana senarai itu adalah batal.
Penyelesaian: Apabila menggunakan ungkapan lambda atau rujukan kaedah, pastikan rujukan objek tidak batal. Dalam kod anda, anda boleh menambah semakan nol, yang selalunya merupakan amalan terbaik untuk menyelesaikan pengecualian NullPointer.
Ringkasan
Rujukan kaedah Java8 membolehkan pembangun memanipulasi kaedah dan pembina dengan mudah sebagai warga kelas pertama. Walaupun rujukan kaedah Java8 mudah dan boleh dibaca, beberapa ralat dan masalah biasa masih berlaku apabila menggunakannya, seperti kelas tidak ditemui, nombor parameter kaedah tidak sepadan atau NullPointerException. Dalam artikel ini, kami menyediakan beberapa penyelesaian dan petua untuk membantu pembangun mengelakkan dan menangani masalah ini, dengan itu memastikan bahawa pembangun mendapat pengalaman rujukan kaedah Java8 yang terbaik.
Atas ialah kandungan terperinci Ralat Java: Ralat Rujukan Kaedah Java8, Cara Mengendalikan dan Mengelak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!