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 auflisten
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 gibt die folgenden Möglichkeiten, den Nullwert einer Zeichenfolge zu bestimmen:
1 Eine der von die meisten Menschen, Intuitiv, praktisch, aber ineffizient:
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());
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
#🎜🎜 #
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:
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(); }
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!