有一种称为“防御性驾驶”的驾驶方式。 防御性驾驶员会预料到事故和不良驾驶员。 这降低了发生事故的机会。 它使我免于几次严重的事故。
同样,我们可以避免恐怖空指针异常在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();
}
}
你呢? 你遇到了恐惧空指针异常最近? 你怎么修好它的?