Rumah  >  Artikel  >  Java  >  Bagaimana untuk melaksanakan penghakiman kosong di Jawa

Bagaimana untuk melaksanakan penghakiman kosong di Jawa

王林
王林ke hadapan
2023-05-13 16:34:061017semak imbas

    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();
    }

    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;
      }
    Apabila menggunakan Pilihan, ia boleh dilakukan dalam satu baris, sangat elegan.

    boolean blind = false;
    if (null != baseInfo.getBlind()){
        blind = baseInfo.getBlind();
    }

    4.1 Penciptaan Objek Pilihan

    boolean blind = Optional.ofNullable(baseInfo.getBlind()).orElse( other: false);

    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);
        }
    }

    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));

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

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam