最近偶然发现了与Java Integer Cache相关的问题,我正在寻找一种禁用它的方法.
现在测试是不可能的,因为除非我们使用缓存之外的整数值进行测试,否则我们不能说它有效.
我们的案例:我们进行了8次错误!=比较,并且在2个月的测试中一切正常,因为我们从未有过PK高于128的底层数据库实体.
你没有.整数缓存是一个实现细节Integer.如果使用Integer,则接受缓存.这是一件好事,可以减少可能创建的有效复制对象的数量.
使用FindBugs定位虚假整数引用比较并替换它们Integer.equals- 这是解决您遇到的问题的正确方法.
如果您的应用程序中存在对该语言至关重要的问题,那么我强烈建议您运行一整套静态分析测试并逐步进行分类测试.