Rumah >Java >javaTutorial >Mengendalikan NullPointerException dengan Pilihan

Mengendalikan NullPointerException dengan Pilihan

Linda Hamilton
Linda Hamiltonasal
2025-01-04 06:41:41325semak imbas

Handling NullPointerException with Optional

Definisi

NPE ialah pengecualian masa jalan yang berlaku apabila cuba menggunakan rujukan nol. JVM membuang pengecualian ini untuk melindungi daripada penyahrujukan penunjuk nol, yang boleh menyebabkan ranap program.

Punca Biasa

Contoh Asas

String name = null;
int length = name.length(); // NPE thrown here

Di sini, kami cuba memanggil kaedah pada rujukan nol. Nama pembolehubah tidak mengandungi objek, jadi kami tidak boleh menggunakan length().

Contoh Objek Bersarang

class User {
    Address address;
}
class Address {
    String street;
}

User user = new User();
String street = user.address.street; // NPE: address is null

Ini menunjukkan cara akses objek bersarang boleh gagal. Walaupun pengguna wujud, alamat adalah batal kerana kami belum memulakannya.

Contoh Koleksi

List<String> items = null;
items.add("item"); // NPE

Koleksi hendaklah dimulakan sebelum digunakan. Lebih baik untuk memulakan sebagai kosong: Senarai item = ArrayList baharu<>();

Penggunaan Pilihan Diterangkan

Rantaian Pilihan Asas

Optional<User> user = Optional.of(new User());
String street = user
    .flatMap(User::getAddress)  // Converts User to Optional<Address>
    .map(Address::getStreet)    // Converts Address to Optional<String>
    .orElse("Unknown");         // Provides default if null

Ini menggantikan semakan null bersarang dengan API yang fasih. Setiap langkah mengendalikan potensi batal dengan selamat.

Peta dan Penapis

Optional<String> upperStreet = Optional.ofNullable(user)
    .filter(u -> u.getName() != null)  // Only proceed if name exists
    .map(User::getName)                // Get the name
    .map(String::toUpperCase);         // Transform it

Ini menunjukkan cara mengubah nilai sambil mengendalikan null dengan selamat.

Nilai Lalai

String result = Optional.ofNullable(someString)
    .orElse("default");

Cara yang bersih untuk memberikan nilai sandaran dan bukannya semakan nol.

Pelaksanaan Bersyarat

Optional.ofNullable(user)
    .ifPresent(u -> System.out.println(u.getName()));

Laksanakan kod hanya apabila nilai wujud, menggantikan semakan if-not-null.

Atas ialah kandungan terperinci Mengendalikan NullPointerException dengan Pilihan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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
Artikel sebelumnya:ObjekArtikel seterusnya:Objek