又犯了一个低级错误。在开发测试阶段误使用了Integer的==,自己测试和开发测试没有暴露问题。但是运行了一段时间的系统出问题了,debug才发现是整形的==导致错误。但是为什么测试的时候没有出现了,于是看了下Java的Integer。
public static Integer valueOf(int i) {
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
原来-128 --- 127 之间的数字是没有问题的,一旦不再这个范围就会导致问题。因为出了这个范围的整数将会被new