您的位置:首页 > 其它

记一次找bug的过程(boolean 与 Boolean)

2018-03-22 15:34 369 查看
   公司网络下有多个服务模块,我所负责的模块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    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息