Rumah > Java > javaTutorial > teks badan

Bagaimana untuk melaksanakan penghakiman kosong di Jawa

王林
Lepaskan: 2023-05-13 16:34:06
ke hadapan
1092 orang telah melayarinya

    1. Prakata

    Dalam projek sebenar, kami akan mempunyai banyak tempat di mana pengesahan batal tidak dilakukan, NullPointerException mungkin berlaku. .

    Mari kita lihat dahulu beberapa kaedah penghakiman nol dalam projek sebenar

    Bagaimana untuk melaksanakan penghakiman kosong di Jawa

    if (ObjectUtil.isNotNull(vo.getSubmitterId())) {
        userIds.add(vo.getSubmitterId());
    }
    if (StringUtils.isNotBlank(vo.getBudgetPM())) {
        userIds.add(Long.valueOf(vo.getBudgetPM()));
    }
    if (CollUtil.isNotEmpty(vo.getOriginatorList())) {
        userIds.addAl1(vo.getOriginatorList().stream();
    }
    Salin selepas log masuk

    Biasanya kami menilai sama ada objek adalah Null, anda boleh menggunakan Objects dalam java.util .nonNull(obj), ObjectUtil in hutool or directly null != obj

    2 Null judgement of List

    Item khas seperti List mungkin bukan sahaja menilai bukan null dalam projek Kosong. Untuk Senarai, ia tidak sama dengan nol dan List.size() tidak sama dengan 0. Mereka adalah dua perkara yang berbeza dalam syarikat sering mengelirukan kedua-dua ini dimulakan dan terdapat sekeping memori timbunan yang dimiliki oleh tapak, dan saiz 0 bermakna tiada apa-apa yang telah dimasukkan ke dalamnya Sebagai contoh, jika ia tidak sama dengan null, ini bermakna saya kini mempunyai sebotol Jika saiz lebih besar daripada 0, bermakna saya telah mengisi botol dengan air.

    Dalam projek sebenar, ia juga didapati bahawa list.isEmpty() digunakan untuk menilai secara langsung. air dalam botol (dengan syarat botol sudah wujud, Jika botol tidak wujud, NullPointerException akan dibuang).

    Jadi biasanya senarai != null && list.size > 0 digunakan untuk menilai, atau secara langsung menggunakan isEmpty alat CollUtil dalam HuTool. Terdapat juga Set, Peta, dsb.

    3 Penghakiman kosong bagi String

    Konsep botol dan air masih digunakan di sini Apabila String adalah nol, operasi seperti sama dengan(String) atau length() dipanggil. Throws java.lang.NullPointerException.

    Bagaimana untuk melaksanakan penghakiman kosong di JawaTerdapat beberapa cara untuk mengesan rentetan kosong:

    1 Salah satu kaedah yang digunakan oleh kebanyakan orang, intuitif dan mudah, tetapi tidak cekap :

    if(a == null || a.equals(""));2. Bandingkan panjang rentetan, cekap:

    if(a == null || a.length() == 0);3 kecekapan adalah serupa dengan kaedah dua:

    if(a == null || a.isEmpty()); Sudah tentu, anda juga boleh menggunakan alat org.apache.commons.lang.StringUtils.

    StringUtils.isNotBlank(a);

    * StringUtils.isNotBlank(null) = false

    * StringUtils.isNotBlank("") = false

    * StringUtils.isNotBlank(" ") = false

    * StringUtils.isNotBlank("bob") = true

    * StringUtils.isNotBlank(" bob ") = benar

    Terdapat juga kaedah isNotEmpty() dalam kelas alat ini Perbezaan antara keduanya boleh dilihat dengan jelas daripada ulasan

    StringUtils.isNotEmpty(a);

    * StringUtils.isNotEmpty(null) = false

    * StringUtils.isNotEmpty("") = false

    * StringUtils.isNotEmpty(" ") = true

    * StringUtils.isNotEmpty("bob") = benar

    * StringUtils.isNotEmpty(" bob ") = true

    4 digunakan Cegah NullpointException. Kaedah biasa ialah:

    .empty(): Buat contoh Pilihan kosong

    • .of(T t): Buat Contoh Pilihan, pengecualian akan dilaporkan jika ia adalah batal

    • .ofNullable(T t): Jika t bukan null, buat contoh Pilihan, jika tidak buat contoh kosong

    • isPresent(): Tentukan sama ada terdapat nilai dalam bekas

    • ifPresent(Consume lambda): Jika bekas itu tidak kosong, laksanakan ungkapan Lambda dalam kurungan

    • orElse(T t): Dapatkan elemen dalam bekas Jika bekas kosong, kembalikan nilai lalai dalam kurungan

    • <🎜. >orElseGet(Supplier s): Jika objek panggilan mengandungi nilai , kembalikan nilai itu, jika tidak, kembalikan nilai yang diperolehi oleh s

    • orElseThrow(): Jika kosong, buang yang ditakrifkan pengecualian, jika tidak, kembalikan objek semasa

    • peta(Fungsi f): Jika terdapat nilai, proses dan kembalikan Pilihan yang diproses, jika tidak kembalikan Optional.empty()

    • flatMap(Function mapper ): Sama seperti peta, nilai pulangan mestilah Pilihan

    • T get(): Dapatkan elemen dalam bekas, jika bekas itu kosong, pengecualian NoSuchElement akan dibuang

    • Mari kita lihat contoh biasa dahulu:

      Terdapat atribut Boolean dalam kelas baseInfo adalah kosong, ia mengembalikan palsu Jika ia tidak kosong, ia mengambil nilainya, yang memerlukan empat baris.
    • public boolean isEmpty() {
          return size == 0;
      }
      Salin selepas log masuk
    Apabila menggunakan Pilihan, ia boleh dilakukan dalam satu baris, sangat elegan.

    boolean blind = false;
    if (null != baseInfo.getBlind()){
        blind = baseInfo.getBlind();
    }
    Salin selepas log masuk

    4.1 Penciptaan Objek Pilihan

    boolean blind = Optional.ofNullable(baseInfo.getBlind()).orElse( other: false);
    Salin selepas log masuk

    4.2 Senario Penggunaan

    Senario 1: Tanya objek dalam lapisan perkhidmatan, dan selepas mengembalikannya, tentukan sama ada ia kosong dan proseskannya

    public final class Optional<T> {
        private static final Optional<?> EMPTY = new Optional<>();
        private final T value;
        //可以看到两个构造方格都是private 私有的
        //说明 没办法在外面new出来Optional对象
        private Optional() {
            this.value = null;
        }
        private Optional(T value) {
            this.value = Objects.requireNonNull(value);
        }
        //这个静态方法大致 是创建出一个包装值为空的一个对象因为没有任何参数赋值
        public static<T> Optional<T> empty() {
            @SuppressWarnings("unchecked")
            Optional<T> t = (Optional<T>) EMPTY;
            return t;
        }
        //这个静态方法大致 是创建出一个包装值非空的一个对象 因为做了赋值
        public static <T> Optional<T> of(T value) {
            return new Optional<>(value);
        }
        //这个静态方法大致是 如果参数value为空,则创建空对象,如果不为空,则创建有参对象
        public static <T> Optional<T> ofNullable(T value) {
            return value == null ? empty() : of(value);
        }
    }
    Salin selepas log masuk

    Senario 2: Menggunakan pengaturcaraan Pilihan dan berfungsi, dilakukan dalam satu baris

    Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
    Optional.ofNullable(task).orElseThrow(() -> new ProcessException(ErrorCodeEnum,SYSIEM ERROR));
    Salin selepas log masuk

    Atas ialah kandungan terperinci Bagaimana untuk melaksanakan penghakiman kosong di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    sumber:yisu.com
    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