ideal中出现Warning:(20, 16) String concatenation as argument to ‘StringBuffer.append()‘ call的原因分析

问题描述

最近带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的查找替换功能进行替换

当然,手动替换可能有些繁琐,需要使用查找替换功能,

  1. 查找:+
  2. 替换为:).append(即可。
写代码实现替换

核心代码如下:

/**
 * 把StringBuffer或StringBuilder中的字符串连接符<code>+</code>替换append()方法
 *
 * @return 替换后的字符串.
 */
public String StringConnectorToAppend(String stringBufferAppendCode) {
    String returnValue = "// " + stringBufferAppendCode + "\n";
    return returnValue + stringBufferAppendCode.replaceAll("\\s*\\+\\s*", ").append(");
}
2. 忽略

这个不替换也能运行,而且替换后代码长度变长了,不好阅读,可以选择忽略.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值