我有一些看起来像这样的代码(我用通用变量替换了我的业务变量):
Map<String, String> map = new HashMap<String, String>();
for (int i = 1; i < 10; i++) {
String suffix1 = retrieveValue1(i);
String suffix2 = retrieveValue2(i);
String tag = "prefix";
if (suffix1 != null) {
tag += suffix1;
}
else {
tag += suffix2;
}
map.put(tag.toUpperCase(), "on");
}
Run Code Online (Sandbox Code Playgroud)
让我感到困扰的是我收到以下 SonarQube 违规:
性能 - 方法在循环中使用 + 连接字符串
在我看来,这是一个误报(因为这里的 String 没有真正的循环),但我想先仔细检查一下。
我在我的朋友 Google 上找不到任何类似的案例。
这是误报,还是我的循环中有真正的性能损失?
+=是的,SonarQube 可能对循环内部的使用感到困惑。
String tag = "prefix";在循环内创建,因此循环内没有字符串串联for,从技术上讲,该警告是误报。
请注意,您仍然可以使用StringBuilder附加标签的两个部分,但您必须衡量是否有必要。