1

我最近遇到了一个奇怪的问题,我们的 Bamboo box 上的测试失败了,但在 dev box 上却没有。经过大量调试后,我们发现原因是由于在 Long 而不是 .equals 上使用了 ==。一旦我发现它是有道理的,但我很惊讶没有开发人员可以重新创建它,但它总是发生在构建盒上。

对于我们的测试,最好能捕捉到这些类型的东西并尝试防止 == 出现意外,但我不知道有一种方法可以告诉 Java 不要实习 Longs、Strings 等......你可以给JVM一个设置来处理这个吗?

4

2 回答 2

8

检测此类问题的一种方法是在构建期间对代码执行静态分析。我相信FindBugs有一个用于参考相等的检测器。

请参阅:可疑参考比较

于 2013-09-05T16:50:22.657 回答
0

一个快速的谷歌搜索变成了空白,但我相信有一个命令行参数来控制长缓存的大小(默认为 256)。这是我在一年前在 StackOverflow 上读到的内容,因此,遵循 SO 是值得的!如果你能在你的测试机器上找到它并将其设置为零,它将涵盖这个特定的问题。

找到它 - 看看 SO question# 2974561。@sunny 在最后回答。

新整数与 valueOf

嗯,更详细地看,您似乎可以增加缓存,但不能减少。所以不要认为这会奏效,但也许你可以想出办法。

于 2013-09-05T17:52:30.227 回答