那些偷偷摸摸的NullPointerExceptions!

有一种称为“防御性驾驶”的驾驶方式。 防御性驾驶员会预料到事故和不良驾驶员。 这降低了发生事故的机会。 它使我免于几次严重的事故。

同样,我们可以避免恐怖空指针异常在Java中,如果我们知道如何预期的话。

例如,这有什么问题如果校验?

if (aString.equals("yes")) { /* do stuff */ }

假设字符串已初始化。 如果未初始化字符串,它将是空值! 呼唤。等于()在一个空值对象不能很好地结束。 这比您预期的发生得更多。 最好这样写:

if ("yes".equals(aString)) { /* do stuff */ } 

我最近编辑了一个POJO,该POJO旨在表示反序列化的JSON对象。 业务需求说我需要删除任何前导或尾随空格。 幸运的是,String.trim()方法可以在一行中为我完成此操作! 我像这样将它放在二传手中:

public class Person {
  private String firstName;

  public String getFirstName() { return this.firstName; }

  public void setFirstName(String firstName) { 
    this.firstName = firstName.trim(); 
  }
}

看起来足够纯真。 😉

想象一下,将JSON转换为该对象时,我的挫败感是com.fasterxml.jackson.databind.JsonMappingException对“ N / A”的解释不太有用。 发生了什么事???

显然,如果名字是空值在JSON中,setFirstName(名字)在打电话修剪()在一个空值宾语!

我需要做的是检查以确保其中的String参数setFirstName(firstName)不为空。 有多种检查方法,但是我选择了三元运算符:

public class Person {
  private String firstName;

  public String getFirstName() { return this.firstName; }

  public void setFirstName(String firstName) { 
    this.firstName = (firstName == null) ? null : firstName.trim(); 
  }
}

你呢? 你遇到了恐惧空指针异常最近? 你怎么修好它的?

from: https://dev.to//groovyjosh/those-sneaky-nullpointerexceptions-580c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值