Rumah > Java > javaTutorial > teks badan

Bagaimana untuk menyelesaikan java.lang.NullPointerException?

王林
Lepaskan: 2023-06-25 14:30:21
asal
6191 orang telah melayarinya

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.

  1. Menyemak rujukan nol

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
}
Salin selepas log masuk
  1. Elak menggunakan objek null

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
}
Salin selepas log masuk
  1. Gunakan nilai lalai

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";
Salin selepas log masuk
  1. Menggunakan anotasi @NonNull

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);
}
Salin selepas log masuk

Jika nilai nol diluluskan semasa memanggil kaedah printName(), amaran akan dibangkitkan pada masa penyusunan, yang boleh menghalang NPE daripada berlaku.

  1. Menggunakan Objects.requireNonNull()

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");
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!