对 File 对象调用 hashCode() 方法会触发此 SonarQube 问题:
而是使用原始值。
如何解决?有什么帮助吗?
File file = ......
.... = Math.abs(file.hashCode());
Run Code Online (Sandbox Code Playgroud)
更新:问题的 SonarQube 描述在这里
我可以写: .... = Math.abs(file.hashCode()+1);
问题的原因是 Integer.MIN 在取绝对值时返回自身。此问题描述如下。
解决方案取决于您需要的值。您建议的解决方案 ( Math.abs(file.hashCode() + 1)) 不起作用,因为如果hashCode()函数返回 Integer.MAX 那么加 1 仍然是 Integer.MIN,因此最终结果仍然可能为负数。
如果您确实需要文件的正散列,您可以执行以下操作:
final int hash = file.hashCode() == Integer.MIN ? Integer.MAX : Math.abs(file.hashCode());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1804 次 |
| 最近记录: |