1

なるほど、Javaでは文字列を作成できます

  • MessageFormatとのような文字列"You said {0} just now"
  • StringBufferとのような構造

    StringBuffer mail = new StringBuffer("Dear ");
    mail.append(user.name);
    mail.append(",\nCongratulations!");
    ....
    
  • 他の良いオプションがあるかもしれません、文字列の連結はそれらの1つではありません

では、どの方法を使用すればよいですか?私の考えは次のとおりです。コンテンツの一部を動的に置き換える必要がある5〜6の標準テキストがあります。テキストを定数としてどこかに置き(定数またはプロパティファイルを含むクラス)、必要なときにすぐに置き換える方がよいと思います。そうしないと、ソースコードの途中に、のようにいつか変更される可能性のある文字列が含まれることになりますStringBuffer("Dear ")

さらに良いオプションはありますか?

4

4 に答える 4

1

生成したいメールの場合は、どちらの方法もお勧めしません。むしろ、Javaオブジェクトの値をそのコンテキストにマップしたレターまたは電子メール本文のVelocityテンプレートが必要です。それは理解し、維持するのがはるかに簡単でしょう。テンプレートはコードから外部化できるため、変更が簡単です。

于 2012-12-11T16:51:08.533 に答える
1
    String str = new StringBuffer().append("Hello").append("World").toString();
    System.out.println(str);

            //print Hello World 

             it contain into package import java.text.MessageFormat;
             "When you using Message format"
              Object[] values = { "123456", "asdfjk" };

    String output = MessageFormat.format("Value 1 equals: {0} and Value 2 equals{1}", values);
    System.out.println(output);
    // prints:
    // The value of value 1 is: 123456 The value of value 2 is: asdfjk
于 2012-12-11T17:06:47.750 に答える
1

あなたはあなたが信じるものが最も単純で最も明確であるべきです。個人的には

String mail = "Dear " + user.name + ",\nCongratulations!";

StringBufferやMessageFormatを使用するよりも短く効率的です。

于 2012-12-11T17:15:54.907 に答える
1

さまざまなコメントで示唆されているようにStringBuilder、文字列連結の最速の実装です。正規表現のオーバーヘッドでMessageFormat内部的に使用します。StringBuilder

于 2015-10-12T08:51:56.417 に答える