Dans les projets réels, nous aurons de nombreux endroits où une vérification nulle est nécessaire. Si la vérification nulle n'est pas effectuée, NullPointerException peut se produire.
Jetons d'abord un coup d'œil à quelques méthodes de jugement nul dans des projets réels
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(); }
Habituellement, nous jugeons si un objet est nul, vous pouvez utiliser Objects.nonNull(obj) dans java.util, ObjectUtil dans hutool ou directement null ! = obj
Les éléments spéciaux comme List ne peuvent pas seulement juger non vide dans le projet. Pour List, il n'est pas égal à null et List.size() n'est pas égal à 0. Ce sont deux choses différentes. Les stagiaires de l'entreprise confondent souvent ces deux-là. Si list n'est pas égal à null, cela signifie qu'il l'a été. initialisé et il y a un morceau de mémoire tas qui lui appartient. Le site, et une taille de 0 signifie que rien n'y a été mis. Par exemple, s'il n'est pas égal à null, cela signifie que j'ai maintenant une bouteille. . Si la taille est supérieure à 0, cela signifie que j'ai rempli la bouteille d'eau.
Dans les projets réels, on constate également que list.isEmpty() est utilisé pour juger directement. Jetons un coup d'œil au code source :
public boolean isEmpty() { return size == 0; }
Cela équivaut à juger s'il y a de l'eau dans la bouteille (à condition que la bouteille soit remplie d'eau). la bouteille existe déjà, si la bouteille n'existe pas, elle sera levée. Une exception NullPointerException se produit).
Donc, généralement list != null && list.size > 0 est utilisé pour juger, ou utilise directement isEmpty de l'outil CollUtil dans HuTool. Il existe également Set, Map, etc.
Ici, nous utilisons toujours les concepts de bouteilles et d'eau Lorsque String est nul, l'appel de equals(String) ou length() et d'autres opérations lancera Java. lang.NullPointerException.
Il existe les méthodes suivantes pour vérifier la valeur nulle d'une chaîne :
1 L'une des méthodes utilisées par la plupart des gens est intuitive, pratique, mais inefficace :
if(a == null. || a.equals(""));
if(a == null || a.equals(""));
2、比较字符串长度,高效:
if(a == null || a.length() == 0);
3、Java SE 6.0 才刚刚开始提供,效率和方法二差不多:
if(a == null || a.isEmpty());
if(a == null || a.length() == 0); code ><p><strong>3. Java SE 6.0 vient de commencer à être fourni, et l'efficacité est presque la même que celle de la deuxième méthode : </strong></p>
<code>if(a == null || a.isEmpty());
Bien sûr, vous pouvez également utiliser l'outil 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 ") = trueIl existe également une méthode isNotEmpty() dans cette classe d'outils. La différence entre les deux est clairement visible dans les commentaires.
StringUtils.isNotEmpty(a);
* StringUtils.isNotEmpty(null) = false* StringUtils.isNotEmpty("") = false* StringUtils.isNotEmpty(" ") = true* StringUtils. isNotEmpty( "bob") = trueboolean blind = false; if (null != baseInfo.getBlind()){ blind = baseInfo.getBlind(); }Lors de l'utilisation d'Optional, cela peut être fait en une seule ligne, très élégant.
boolean blind = Optional.ofNullable(baseInfo.getBlind()).orElse( other: false);4.1 Création d'objets facultatifs🎜
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); } }🎜4.2 Scénarios d'utilisation🎜🎜Scénario 1 : interroger un objet dans la couche de service, et après l'avoir renvoyé, déterminer s'il est vide et le traiter🎜
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); Optional.ofNullable(task).orElseThrow(() -> new ProcessException(ErrorCodeEnum,SYSIEM ERROR));🎜Scénario 2 : Utilisation facultative et fonctionnelle programmation, une ligne Terminé 🎜
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); Map<String,String> map = new HashMap<>( initialCapacity: 8); Optional.ofNullable(task).ifPresent(d -> map.put("taskId",d.getTaskDefinitionKey()));
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!