私は以下のコードを複製していますので、一度だけ書いておきたいと思います(Java 6でStringBufferとStringBuilderの統一コードを書く方法
)。public class A {
public void doSomething(StringBuffer additional, int start, int end) {
try {
StringBuilder strBuilder = callMethodA();
strBuilder.append(additional, start, end);
B.doSomething(strBuilder, additional, start, end);
} catch (Exception e) {
// do something
}
}
public void doSomething(StringBuilder additional, int start, int end) {
try {
StringBuilder strBuilder = callMethodA();
strBuilder.append(additional, start, end);
B.doSomething(strBuilder, additional, start, end);
} catch (Exception e) {
// do something
}
}
...
}
public class B {
public static void doSomething(StringBuilder strBuilder,
StringBuilder additional, int start, int end) {
// Do some code specific to "additional" StringBuilder
...
}
public static void doSomething(StringBuilder strBuilder,
StringBuffer additional, int start, int end) {...}
// Do some code specific to "additional" StringBuffer
...
}
あなたが見ることができるように、コードは「追加」パラメータがStringBuilder
クラスA
の第一の方法に及びStringBuffer
秒であるという事実から除いて同じです。 重複を避けるためにコードを変更するにはどうすればよいですか? B
のロジックは、StringBuffer
とStringBuilder
のロジックが異なります。 AbstractStringBuilder
は保護されたクラスなので使用できません。 私は、Java 6
感謝のStringBufferとStringBuilderのが関連していないと
"クラスBのロジックは、StringBufferとStringBuilderで異なります。"どのように違うのですか? – Kayaman
たとえば、StringBuilderの場合は新しいStringBuilderを作成し、StringBufferの場合は新しいStringBufferを作成したいとします。 –
違いについて:http://stackoverflow.com/questions/355089/difference-between-stringbuilder-and-stringbuffer?rq=1 –