Rumah  >  Artikel  >  Java  >  Kelas pilihan dalam Java 8: Cara mengendalikan kemungkinan nilai nol menggunakan kaedah orElseThrow()

Kelas pilihan dalam Java 8: Cara mengendalikan kemungkinan nilai nol menggunakan kaedah orElseThrow()

WBOY
WBOYasal
2023-07-30 13:57:133013semak imbas

Kelas pilihan dalam Java 8: Cara menggunakan kaedah orElseThrow() untuk mengendalikan kemungkinan nilai nol

Pengenalan:
Dalam pembangunan Java, kita sering menghadapi situasi di mana kita berurusan dengan kemungkinan nilai nol. Dalam versi Java yang lebih awal, kami biasanya menggunakan null untuk menunjukkan ketiadaan nilai. Walau bagaimanapun, terdapat beberapa masalah dengan menggunakan null Sebagai contoh, kita perlu kerap menentukan sama ada ia adalah batal, dan pengecualian penuding nol cenderung berlaku. Untuk menyelesaikan masalah ini, Java 8 memperkenalkan kelas Pilihan. Kelas Pilihan menyediakan cara yang elegan untuk mengendalikan nilai yang berpotensi nol.
Artikel ini akan memperkenalkan orElseThrow(), kaedah penting bagi kelas Pilihan, dan menunjukkan penggunaannya melalui kod sampel.

Penggunaan asas kelas Pilihan: Kelas
Pilihan ialah kelas kontena yang diperkenalkan dalam Java 8, digunakan untuk membalut nilai yang mungkin nol. Ia menyediakan beberapa kaedah untuk membantu kami menangani situasi nilai nol. Mula-mula, mari kita lihat penggunaan asas kelas Pilihan.

  1. Mencipta objek Pilihan
    Anda boleh mencipta objek Pilihan melalui kaedah statik Optional.ofNullable(nilai T). Jika nilai adalah nol, objek Pilihan kosong dibuat; jika nilai bukan nol, objek Pilihan yang mengandungi nilai dicipta.

Contoh kod:

String name = "Alice";
Optional<String> optionalName = Optional.ofNullable(name);

// 另一种方式创建空的 Optional
Optional<String> emptyOptional = Optional.empty();
  1. Tentukan sama ada Pilihan mempunyai nilai
    Anda boleh menentukan sama ada terdapat nilai dengan memanggil kaedah isPresent() bagi objek Pilihan. Kaedah ini mengembalikan nilai boolean yang menunjukkan sama ada objek Pilihan mengandungi nilai bukan nol.

Contoh kod:

if (optionalName.isPresent()) {
    System.out.println("存在值");
} else {
    System.out.println("值为空");
}
  1. Dapatkan nilai Pilihan
    Anda boleh mendapatkan nilainya dengan memanggil kaedah get() objek Pilihan. Tetapi sebelum memanggil kaedah get(), sebaiknya gunakan kaedah isPresent() untuk menentukan sama ada Pilihan wujud. Kerana jika Pilihan kosong, memanggil kaedah get() akan membuang pengecualian NoSuchElementException.

Contoh kod:

if (optionalName.isPresent()) {
    System.out.println("姓名为:" + optionalName.get());
} else {
    System.out.println("姓名为空");
}

Penggunaan orElseThrow():
Sebagai tambahan kepada penggunaan asas di atas, kelas Pilihan juga menyediakan kaedah yang berkuasa atauElseThrow(). Kaedah ini akan membuang pengecualian yang ditentukan apabila objek Pilihan tidak mengandungi nilai.

  1. Gunakan kaedah orElseThrow() untuk membuang pengecualian
    Anda boleh menentukan pengecualian untuk dilemparkan dengan memanggil kaedah orElseThrow(Pembekal15ffce7d55f4fc553f505221b6750d9d exceptionSupplier) bagi objek Pilihan. Ambil perhatian bahawa apa yang diluluskan di sini ialah rujukan kaedah pembina yang tidak normal.

Contoh kod:

Double price = null;
Double finalPrice = Optional.ofNullable(price)
        .orElseThrow(() -> new IllegalArgumentException("价格为空"));

System.out.println("最终价格为:" + finalPrice);

Dalam kod di atas, jika harga kosong, IllegalArgumentException akan dilemparkan.

  1. Kelas pengecualian tersuai
    Kami juga boleh menyesuaikan kelas pengecualian untuk mengendalikan pengecualian tertentu.

Contoh kod:

class PriceNullException extends RuntimeException {
    public PriceNullException(String message) {
        super(message);
    }
}

Double price = null;
Double finalPrice = Optional.ofNullable(price)
        .orElseThrow(() -> new PriceNullException("价格为空"));

System.out.println("最终价格为:" + finalPrice);

Dalam kod di atas, jika harga kosong, pengecualian PriceNullException tersuai akan dilemparkan.

  1. Perbandingan antara kaedah orElseThrow() dan kaedah lain
    Berbanding dengan kaedah get() sebelumnya, kaedah orElseThrow() tidak akan membuang pengecualian NoSuchElementException apabila Pilihan kosong, tetapi boleh membuang pengecualian tersuai. Ini menjadikan kod lebih bersih dan lebih mudah dibaca.

Kesimpulan:
Artikel ini memperkenalkan cara menggunakan kaedah orElseThrow() bagi kelas Pilihan dalam Java 8, dan menunjukkan cara mengendalikan kemungkinan nilai nol melalui contoh kod. Menggunakan kelas Pilihan boleh menjadikan kod kami lebih stabil dan selamat, dan mengurangkan kekerapan pengecualian penuding nol. Walau bagaimanapun, anda juga perlu berhati-hati untuk tidak keterlaluan apabila menggunakan kelas Pilihan, supaya kod tersebut menjadi verbose dan sukar difahami. Saya harap artikel ini dapat membantu pembaca lebih memahami dan menggunakan kelas Pilihan.

Atas ialah kandungan terperinci Kelas pilihan dalam Java 8: Cara mengendalikan kemungkinan nilai nol menggunakan kaedah orElseThrow(). 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