2011-02-02 6 views
2

toStringメソッドのすべてのカテナネーションをJavaのStringBuilderに再帰的に置き換える方法はありますか?そのようなプラグインはEclipseにありますか?そうお気軽にこのオフトピック答えを無視する - -StringBuilderへの文字列カテナリをどのように置き換えるか?

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

どのプログラミング言語を使用していますか?それはC#またはJavaですか?他の多くのタグを選んで、言語を指定するのを忘れてしまった。 –

+0

@ Code Grey - EclipseでC#を開発できますか?また、キャメルケーシングはプレゼントです... ;-) –

+4

これをやりたい理由はありますか?私は、あなたの2つのコードブロックは、Javaコンパイラがそれで完了したら、ほぼ同じであると信じています。 –

答えて

13

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(); 
+0

ありがとう、それは私のために働く! –

+0

あなたは私の日に感謝の人を救った! – DroidBot

2

私は、このためのEclipseプラグインの聞いたことがないが、しかし、IntelliJのはあります。たとえば :この時

return "AccountAddresses [" 
      + ", corporateAddresses=" + CommonHelper.isNotNull(corporateAddresses) 
      + ", corporateDeliveryMinimum=" + corporateDeliveryMinimum 
      + ", depot=" + CommonHelper.isNotNull(depot) 
      + ", depotDeliveryMinimum=" + depotDeliveryMinimum 
      + ", preSelectedId=" + preSelectedId 
      + ", residentialAddresses=" + CommonHelper.isNotNull(residentialAddresses) 
      + ", residentialDeliveryMinimum=" + residentialDeliveryMinimum 
      + "]"; 

: それを交換してくださいあなたのためにそれを行う "意図"(少なくとも10.0で)。あなたにそれを与えるために利用可能なcommunity editionがあります。

0

なぜあなたのクラスのtoStringメソッドをオーバーライドして、stringbuilderを実装してください。

1

は、正規表現検索を行うと置き換えます

", ([a-zA-z0-9]+)=" \+ CommonHelper\.isNotNull\(([a-zA-z0-9]+)\) // Find this 

append(", $1=").append(CommonHelper.isNotNull($2)) // and replace with this 

をそれは完全ではありませんが、あなたのアイデアを得ます。

0

私はプラグインがあなたのためにやっているとは思っていません...とにかくこれは役に立たないでしょう:Javaコンパイラは誰よりも優れています(そして "StringBuilder"コンパイラは明示的にStringBuilderを使用していない場合、この「何か良い」を使用することができます)。

+0

これでコンパイラはすべての単一の連結をStringBuilderに置き換えます。これは高価です(マイクロ最適化シアターの観点から)。 'a + b + c'は' new sb(new sb(a + b)+ c) 'になります。 – DerMike

+0

これは本当ですか?私が間違っていないと、この種のシナリオ(StringBuilderが "+")になるのは、コンパイラが "追加"(forループなど)を行うことができない場合だけです。これのようなもの:http://stackoverflow.com/questions/1296571/what-happens-when-java-compiler-sees-many-string-concatenations-in-one-line – Kellindil

関連する問題