記一次找bug的過程(boolean 與 Boolean)

   公司網絡下有多個服務模塊,我所負責的模塊A需要向工程師甲的接口請求並接收數據。從工程師甲手裏拿到的接口文檔示例如下:


(這是返回的字段列表)

字段名類型
isAuthboolean
filedBboolean

    按照國際慣例,我在本地下寫了接收json的bean。如下:

public class Test{

    private boolean isAuth;

    private boolean fieldB;

    (get set 方法略)

}    

因爲本來我就只是爲了避免前端頁面出現跨域問題,所以做了中間工作的轉發,也就是B服務器返回什麼我就直接返回給前端,代碼寫好後,模擬測試一遍,覺着網絡沒問題我就發佈到測試環境裏去。

前端在測試的時候,覺着數據不對,前端拿到的是:{"isAuth":false,"fieldB":true},isAuth應該是true,可是從我後臺拿到的isAuth卻是false。當時我的第一反應就是甲服務器的數據問題,和我無關,把問題拋給甲後,甲根據服務器日誌告訴我返回的是:{"isAuth":true,"fieldB":true}。當時就有點不明白什麼原因,莫非靈異事件?仔細校對文檔,每個字段都是正確的,clean一下,結果仍是fasle,飯店到了後,仍未解決問題。。。

2點上班後,甲問我找到原因了嗎?

我說:沒有找到,懷疑是isAuth是boolean型,可能字段名有誤,isAuth默認成了false,考慮靈異事件,準備刪掉原來的bean,重新搞一個。

甲:isAuth的類型是Boolean,如果isAuth是小寫的boolean的話,在轉換過程中會找不到,會默認爲false,所以當時代碼裏就寫成了Boolean,以對象的方式。(ps:至於文檔,我猜測是甲在寫文檔的那段時間,因爲忙,也沒有注意到,就直接寫成了boolean。)

    最終,代碼修改爲  private Boolean isAuth;  問題就解決了。這次找bug,也讓我想起了基礎課的時候,老師說的boolean類型的變量,都不要字段名前帶is,如果一定要帶,那就改爲Boolean類型。

ps:感興趣轉換過程中爲什麼會找不到的話,可以百度搜索:boolean is    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章