java.lang.NullPointerException今天又是寫bug的一天,小結一下是如何解決空指針異常的,遇到更多的問題找到更多的解題思路自己纔可以進步,加油!
一、實戰問題
先說說我實戰遇到的問題:我本身要從redis中取出帖子的點贊總數(likeCount),然後封裝到Vo視圖中,但是很多文章(帖子)本身點贊數就爲0,所以你從redis取出來的值likeCount爲空null
如果不進行判斷直接封裝,如下:
Object likeCount = redisTemplate.opsForValue().get(key);
postVo.setLikeCount((Integer) likeCount);
前端出現的情況如下
我錯誤的解決方案:我習慣性用.equals
來進行判斷
項目一開馬上報錯
空指針異常
根據建議修改爲StringUtils幫助類
StringUtils 方法的操作對象是 java.lang.String 類型的對象,是對 JDK 提供的 String 類型操作方法的補充,並且是 null 安全的(即如果輸入參數 String 爲 null 則不會拋出 NullPointerException ,而是做了相應處理,例如,如果輸入爲 null 則返回也是 null 等,具體可以查看源代碼)。
注意:在此免費贈送一套最新Java架構項目實戰教程+大廠面試題庫,有興趣的 點擊此處獲取,沒基礎勿進!
二、總結反思
仔細反思一下爲什麼我剛剛會遇到空指針異常呢?
因爲在這裏我取到的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