欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java.lang.NullPointerException空指针异常(解决方案)

程序员文章站 2022-06-23 18:14:18
...

java.lang.NullPointerException今天又是写bug的一天,小结一下是如何解决空指针异常的,遇到更多的问题找到更多的解题思路自己才可以进步,加油!


一、实战问题

先说说我实战遇到的问题:我本身要从redis中取出帖子的点赞总数(likeCount),然后封装到Vo视图中,但是很多文章(帖子)本身点赞数就为0,所以你从redis取出来的值likeCount为空null

如果不进行判断直接封装,如下:

Object likeCount = redisTemplate.opsForValue().get(key);
postVo.setLikeCount((Integer) likeCount); 

前端出现的情况如下
java.lang.NullPointerException空指针异常(解决方案)
我错误的解决方案:我习惯性用.equals来进行判断

java.lang.NullPointerException空指针异常(解决方案)
项目一开马上报错
java.lang.NullPointerException空指针异常(解决方案)
空指针异常
java.lang.NullPointerException空指针异常(解决方案)
根据建议修改为StringUtils帮助类
java.lang.NullPointerException空指针异常(解决方案)

StringUtils 方法的操作对象是 java.lang.String 类型的对象,是对 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为 null 则返回也是 null 等,具体可以查看源代码)。


二、总结反思

仔细反思一下为什么我刚刚会遇到空指针异常呢?

java.lang.NullPointerException空指针异常(解决方案)

因为在这里我取到的likeCount为空,既然这个对象本身为空那自然不能调用这个方法。

所谓空指针异常,是因为用空(null)去调用属性或方法。null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常。

equals何时会空指针异常?

关于A.equals(B)-尽量是“常量”.equals(变量)

①对象为空(null),则不能调用方法;

②所以,为了避免出现空指针异常,应该这样写"要比较的字符串A.equals(变量B)


Hope that we can grow and progress as soon as possible and become an excellent Java Development Engineer