今天在开发的时候没有注意到一个小细节
在使用isEmpty()对字符串判空的时候出现了空指针异常
讲这个错误之前先对空对象和长度=0做一下区分
我们先来看
String a=null 和 String a=""
通俗一点讲
a=null代表a对象为空,就意味着a这个对象是不存在的
a="" 代表 a这个对象是存在的 只不过这个没有存任何字符 长度为0
接下来看代码
String telPhone = TokenHelper.getData().get("telPhone").toString(); //解析出登录用户的手机号
if (telPhone.isEmpty()) {
return CommonResult.failed("Token解析手机号码失败!");
}
如果此时没有解析出手机号码 那么String telPhone=null
看源码
确实没有考虑 当前对象为null的情况 那么肯定就会有空指针的风险
我们要怎么解决呢
推荐使用
StrUtil.isBlank()
上源码
这样一来就避免了空指针的风险
总结:
String类中的isEmpty()只是对字符串长度是否为0做了判断,如果字符串对象为null时就会出现空指针异常
StrUtil.isBlank()在对字符串长度判断的同时,对对象是否为null做了处理 避免了空指针的风险
工具类真的很贴心!!!