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
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!