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

   公司网络下有多个服务模块,我所负责的模块A需要向工程师甲的接口请求并接收数据。从工程师甲手里拿到的接口文档示例如下:


(这是返回的字段列表)

字段名 类型
isAuth boolean
filedB boolean

    按照国际惯例,我在本地下写了接收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    

猜你喜欢

转载自blog.csdn.net/wjw_allen/article/details/79654214