問題描述
最近帶idea
中老是收到下面這個警告:
Warning:(20, 16) String concatenation as argument to 'StringBuffer.append()' call
出現警告的代碼:
sb.append("<property name=\"" + group1 + "\" value=\"${" + group1+ "}\"/>\r\n");
分析原因
其實這個提示是表示方法使用不恰當,因爲StringBuffer
對象的append
方法目的就是做對象拼接用的,裏面再通過"+
"來拼接就不得當,這是編譯器對Java
的代碼規範。
解決方案
1. 全部使用append方法
替換+
號爲).append(
因爲append
方法的返回值還是StringBuffer
,所以可以鏈式調用,我們可以通過鏈式調用來替換掉裏面的加號。
也就是,將:
sb.append("<property name=\"" + group1 + "\" value=\"${" + group1+ "}\"/>\r\n");
替換成:
sb.append("<property name=\"").append(group1).append("\" value=\"${").append(group1).append("}\"/>\r\n");
使用IDE的查找替換功能進行替換
當然,手動替換可能有些繁瑣,需要使用查找替換功能
,
- 查找:
+
- 替換爲:
).append(
即可。
寫代碼實現替換
核心代碼如下:
/**
* 把StringBuffer或StringBuilder中的字符串連接符<code>+</code>替換append()方法
*
* @return 替換後的字符串.
*/
public String StringConnectorToAppend(String stringBufferAppendCode) {
String returnValue = "// " + stringBufferAppendCode + "\n";
return returnValue + stringBufferAppendCode.replaceAll("\\s*\\+\\s*", ").append(");
}
2. 忽略
這個不替換也能運行,而且替換後代碼長度變長了,不好閱讀,可以選擇忽略.