关于Boolean


简单的一个布尔值装箱,都有可能是bug的根源。

Boolean isNeedProxy = (Boolean)threadLocalMap.get(ip);
return ( isNeedProxy ==  Boolean.TRUE ) ? true : false;
我的猜想是编程的人为了防止isNeedProxy为null,所以有了这段代码。
这里有个问题。如果存储的值是new出来的Boolean,那么这里的逻辑就是错的。
Java代码  收藏代码

    Boolean b = new Boolean("true");   
    Assert.assertFalse(b == Boolean.TRUE);   


发现了这个问题,改正起来当然是比较容易的。
Java代码  收藏代码

    return isNeedProxy==null?false:isNeedProxy; 

你可能感兴趣的:(java)