Dalam pengaturcaraan Java, anda mungkin menghadapi pengecualian java.lang.NullPointerException (selepas ini dirujuk sebagai NPE). Pengecualian ini biasanya dilemparkan apabila anda cuba menggunakan objek null atau mengakses rujukan null, dan ini menunjukkan bahawa nilai null yang tidak dijangka ditemui dalam kod.
Terdapat banyak cara untuk menyelesaikan NPE Artikel ini akan memperkenalkan beberapa penyelesaian biasa.
Sebab paling biasa adalah untuk mengakses objek nol atau rujukan null. Apabila anda menggunakan objek dalam kod, pastikan objek itu tidak batal. Pengecualian NPE berlaku apabila objek adalah nol. Untuk mengelakkan ini, sentiasa semak rujukan nol sebelum merujuk objek.
Sebagai contoh, dalam kod berikut, kaedah checkName() mengembalikan null, jadi anda mesti menyemak sama ada nilai pulangannya adalah null.
String name = checkName(); if(name != null){ // do something with name } else { // handle null value }
Mengelakkan penggunaan objek null boleh menyelesaikan masalah NPE dengan berkesan. Anda boleh mengelakkan penggunaan objek nol dengan menggunakan kelas Pilihan, yang diperkenalkan dalam Java 8 untuk menyediakan cara yang lebih baik untuk mewakili nilai yang berpotensi nol.
Sebagai contoh, dalam kod berikut, pembolehubah jenis Pilihan boleh mengandungi nilai bukan nol bagi jenis String.
Optional<String> value = Optional.of("test"); if(value.isPresent()){ // do something with value } else { // handle null value }
Kadangkala, anda mungkin perlu memberikan nilai lalai untuk nilai nol untuk mengelakkan NPE. Nilai lalai boleh diberikan menggunakan operator ternary atau pernyataan if/else. Berikut ialah contoh menggunakan operator ternary:
String name = checkName(); String result = (name != null) ? name : "default value";
Pemaju Java boleh menggunakan anotasi @NonNull untuk mengelakkan isu NPE. Anotasi ini digunakan semasa fasa penyusunan kod untuk memastikan pembolehubah atau parameter tidak batal.
Berikut ialah contoh kaedah yang diberi penjelasan dengan @NonNull:
public void printName(@NonNull String name){ System.out.println(name); }
Jika nilai nol diluluskan semasa memanggil kaedah printName(), amaran akan dibangkitkan pada masa penyusunan, yang boleh menghalang NPE daripada berlaku.
Java 7 memperkenalkan kaedah Objects.requireNonNull(), iaitu kaedah statik yang boleh digunakan untuk menyemak sama ada objek adalah nol. Jika nilai parameter input adalah nol, kaedah ini akan membuang pengecualian NullPointerException, jika tidak, ia akan mengembalikan parameter itu sendiri.
Berikut ialah contoh menggunakan kaedah Objects.requireNonNull():
String value = Objects.requireNonNull(checkValue(), "value cannot be null");
Jika kaedah checkValue() mengembalikan null, pengecualian akan dilemparkan.
Ringkasan
Di atas adalah kaedah praktikal kami untuk menyelesaikan NPE. Apabila anda menghadapi pengecualian NPE, jangan panik Anda boleh menyelesaikan masalah dengan cepat melalui kaedah di atas. Pada masa yang sama, semasa menulis kod, cuba elakkan rujukan nol dan objek kosong, yang boleh menjadikan kod anda lebih mudah dibaca, jelas dan mantap.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan java.lang.NullPointerException?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!