Heim  >  Artikel  >  Java  >  So implementieren Sie ein leeres Urteil in Java

So implementieren Sie ein leeres Urteil in Java

王林
王林nach vorne
2023-05-13 16:34:061100Durchsuche

    1. Vorwort

    In tatsächlichen Projekten wird es viele Stellen geben, an denen wir eine Nullverifizierung benötigen. Wenn Sie keine Nullüberprüfung durchführen, kann die Überprüfung eine NullPointerException-Ausnahme generieren.

    Schauen wir uns zunächst einige Nullbeurteilungsmethoden in tatsächlichen Projekten an kann Objects.nonNull(obj) in java.util, ObjectUtil in hutool oder direkt null != obj

    2 verwenden. Nullurteil auflistenSo implementieren Sie ein leeres Urteil in Java

    Vergleich wie List Speziell im Projekt , es kann mehr sein als nur die Beurteilung, dass es nicht leer ist. Für List ist es nicht gleich null und List.size() ist nicht gleich 0. Das sind zwei verschiedene Dinge. Praktikanten im Unternehmen verwechseln diese beiden oft. Wenn list nicht gleich null ist, bedeutet das, dass es so war initialisiert und es gibt einen Teil des Heap-Speichers, der zur Site gehört, und eine Größe von 0 bedeutet, dass nichts darin abgelegt wurde. Wenn es beispielsweise nicht gleich Null ist, bedeutet dies, dass ich jetzt eine Flasche habe . Wenn die Größe größer als 0 ist, bedeutet das, dass ich die Flasche mit Wasser gefüllt habe.

    In tatsächlichen Projekten wird auch list.isEmpty() zur direkten Beurteilung verwendet:

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

    Es ist äquivalent zu Beurteilen Sie, ob sich Wasser in der Flasche befindet (vorausgesetzt, die Flasche ist bereits vorhanden. Wenn die Flasche nicht vorhanden ist, wird eine NullPointerException ausgelöst).

    Normalerweise wird list != null && list.size > zur Beurteilung verwendet oder isEmpty des CollUtil-Tools in HuTool direkt verwendet. Es gibt auch Set, Map usw.

    3, String leeres Urteil

    Die Konzepte von Flaschen und Wasser werden hier immer noch verwendet. Wenn String null ist, rufen Sie equal(String) auf ) oder length() und andere Operationen lösen eine java.lang.NullPointerException aus.

    Es gibt die folgenden Möglichkeiten, den Nullwert einer Zeichenfolge zu bestimmen:

    1 Eine der von die meisten Menschen, Intuitiv, praktisch, aber ineffizient: So implementieren Sie ein leeres Urteil in Java

    if(a == null || a.equals(""));

    2, Stringlängen vergleichen, effizient:

    if(a == null || a.length() == 0);

    if(a == null || a.equals(""));

    2、比较字符串长度,高效:

    if(a == null || a.length() == 0);

    3、Java SE 6.0 才刚刚开始提供,效率和方法二差不多:

    if(a == null || a.isEmpty());3 Die Bereitstellung von Java SE 6.0 hat gerade erst begonnen und die Effizienz ist ähnlich wie bei Methode zwei:

    if(a == null || a.isEmpty());

    #🎜 🎜#Natürlich können Sie auch das Tool org.apache.commons.lang.StringUtils verwenden.

    StringUtils.isNotBlank(a);

    * StringUtils.isNotBlank(null) = false

    * StringUtils .isNotBlank("") = false

    * StringUtils.isNotBlank(" ") = false

    * StringUtils.isNotBlank("bob") = true

    # 🎜🎜#* StringUtils.isNotBlank(" bob ") = true

    Es gibt auch eine isNotEmpty()-Methode in dieser Tool-Klasse. Der Unterschied zwischen den beiden ist aus den Kommentaren deutlich zu erkennen ## 🎜🎜#

    StringUtils.isNotEmpty(a);

    * StringUtils.isNotEmpty(null) = false

    * StringUtils.isNotEmpty( "" ) = false

    * StringUtils.isNotEmpty(" ") = true

    * StringUtils.isNotEmpty("bob") = true

    * StringUtils .isNotEmpty(" bob ") = true

    4, Optional

    Optional wird verwendet, um NullpointException zu verhindern. Gängige Methoden sind:

      .empty(): Erstellen Sie eine leere optionale Instanz
    • .of (T t): Erstellen Sie eine optionale Instanz und melden Sie eine Ausnahme, wenn sie null ist leeres Beispiel erstellen
    • isPresent(): Bestimmen Sie, ob sich ein Wert im Container befindet
    • ifPresent( Lambda verbrauchen): Container Wenn es nicht leer ist, führen Sie den Lambda-Ausdruck in den Klammern aus
    • orElse(T t): Holen Sie sich das Element im Container, wenn der Container leer ist, geben Sie den Standardwert in den Klammern zurück Value
    • orElseGet(Supplier s): Wenn das aufrufende Objekt einen Wert enthält, geben Sie den Wert zurück, andernfalls geben Sie s zurück Der Wert erhalten
    • #🎜🎜 #

      orElseThrow(): Wenn es leer ist, wird die definierte Ausnahme ausgelöst, andernfalls wird das aktuelle Objekt zurückgegeben
    • # 🎜🎜#map(Funktion f): if Verarbeiten Sie es, wenn ein Wert vorhanden ist, und geben Sie das verarbeitete Optional zurück, andernfalls geben Sie Optional.empty()

    • flatMap(Function Mapper): Ähnlich wie bei Map muss der Rückgabewert sein. Ist optional

    • T get(): Holen Sie sich das Element im Container. Wenn der Container leer ist, ein NoSuchElement Es wird eine Ausnahme ausgelöst.

    • Schauen wir uns zunächst ein allgemeines Beispiel an:

    • Wenn dies der Fall ist, gibt es ein boolesches Typattribut leer, es gibt false zurück. Wenn es nicht leer ist, nimmt es seinen Wert an. Es sind vier Zeilen erforderlich.
    • public boolean isEmpty() {
          return size == 0;
      }

      Bei Verwendung von Optional kann dies sehr elegant in einer Zeile erfolgen.

      boolean blind = false;
      if (null != baseInfo.getBlind()){
          blind = baseInfo.getBlind();
      }
    • 4.1 Erstellung optionaler Objekte
    boolean blind = Optional.ofNullable(baseInfo.getBlind()).orElse( other: false);

    4.2 Nutzungsszenarien

    Szenario 1: Fragen Sie ein Objekt in der Serviceschicht ab und ermitteln Sie, ob dies der Fall ist Nach der Rückkehr leeren und die Verarbeitung durchführen

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

    Szenario 2: Mit optionaler und funktionaler Programmierung kann dies in einer Zeile erfolgen

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

    Das obige ist der detaillierte Inhalt vonSo implementieren Sie ein leeres Urteil in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen