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.
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().
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.
List<String> items = null; items.add("item"); // NPE
Koleksi hendaklah dimulakan sebelum digunakan. Lebih baik untuk memulakan sebagai kosong: Senarai
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.
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.
String result = Optional.ofNullable(someString) .orElse("default");
Cara yang bersih untuk memberikan nilai sandaran dan bukannya semakan nol.
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!