简单的一个布尔值装箱,都有可能是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;