如何递归地将toString方法中的所有catenations替换为StringBuilder for Java? eclipse中有这样的插件吗? 例如: 替换它:
return "AccountAddresses ["
+ ", corporateAddresses=" + CommonHelper.isNotNull(corporateAddresses)
+ ", corporateDeliveryMinimum=" + corporateDeliveryMinimum
+ ", depot=" + CommonHelper.isNotNull(depot)
+ ", depotDeliveryMinimum=" + depotDeliveryMinimum
+ ", preSelectedId=" + preSelectedId
+ ", residentialAddresses=" + CommonHelper.isNotNull(residentialAddresses)
+ ", residentialDeliveryMinimum=" + residentialDeliveryMinimum
+ "]";
在此:
return new StringBuilder("AccountAddresses [")
.append(", corporateAddresses=").append(CommonHelper.isNotNull(corporateAddresses))
.append(", corporateDeliveryMinimum=").append(corporateDeliveryMinimum)
.append(", depot=").append(CommonHelper.isNotNull(depot))
.append(", depotDeliveryMinimum=").append(depotDeliveryMinimum)
.append(", preSelectedId=").append(preSelectedId)
.append(", residentialAddresses=").append(CommonHelper.isNotNull(residentialAddresses))
.append(", residentialDeliveryMinimum=").append(residentialDeliveryMinimum)
.append("]").toString();
答案 0 :(得分:14)
它是Eclipse的内置命令。
Quick Fix
菜单(在键盘上点击Ctrl + 1
)。Use 'StringBuilder' for String concatenation
。魔术!您的
return "foo" + "bar";
更改为
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("foo");
stringBuilder.append("bar");
return stringBuilder.toString();
答案 1 :(得分:2)
我还没有听说过这个Eclipse插件 - 所以可以随意忽略这个非主题的答案 - 但是IntelliJ有一个“意图”可以为你做到这一点(至少10.0它确实如此)。如果您想试一试,可以使用community edition。
答案 2 :(得分:1)
进行正则表达式搜索并替换:
", ([a-zA-z0-9]+)=" \+ CommonHelper\.isNotNull\(([a-zA-z0-9]+)\) // Find this
append(", $1=").append(CommonHelper.isNotNull($2)) // and replace with this
这不完整,但你明白了。
答案 3 :(得分:0)
为什么不重写类中的toString方法,并实现stringbuilder追加。
答案 4 :(得分:0)
我不认为任何插件会为你做到这一点......无论如何这都是无用的:Java编译器会比任何人都做得更好(如果“StringBuilder”被更好的东西取代,那么Java编译器如果你没有明确地使用StringBuilder,将能够使用这个“更好的东西”。