为什么在 SonarQube 中将“”+ int 标记为 Java

Why is ""+ int flagged for Java in SonarQube

在 Java 中,我可以通过 "" + intValue 将整数转换为字符串。 Sonarqube 和 sonarlint 将其标记为不当。

为什么这样不合适。据我所知 Integer.toString(intValue) 更冗长并且做同样的事情。

我可以想象如果不是“”就标记它,但是对象 x 在 x + intValue 中使用,其中 x 被初始化为整数。 运行 用 Java 脚本代码变成类似的东西。

关于它为什么不好,Java 自动优化 String 连接以使用 StringBuilder 代替。这意味着通过这样做

"" + d

你真的在做

new StringBuilder().append(d).toString();

如果你这样做

d + ""

你最终编译

new StringBuilder(String.valueOf(d)).toString();

相对于仅调用

,这是相当大的资源浪费
String.valueOf(d);