AString
は CharSequence
です。Java ライブラリの多くのメソッドは受け入れられるCharSequence
ため、より一般的に動作します。一部のクラスにはメソッド ( など) があり、同等のString
メソッド(などWriter.write(String)
) で実装されます。Appendable
CharSequence
Writer.append(CharSequence)
そのようなクラスに委譲するクラスを作成していて、何らかのテキスト入力が必要な場合、その入力が aString
または であることを選択できますCharSequence
。後者を選択すると、クライアントにより多くのオプションが提供され、クラスがより柔軟になります。しかし、そうするコードはあまり見当たりません。テキスト引数は、ほぼ常に aString
ではなくCharSequence
. を使用することのマイナス面はありCharSequence
ますか? パフォーマンス ヒットはありますか?それとも、単にプログラマーの慣習や無知が原因であり、String
よりもむしろの使用を引き起こしているのCharSequence
でしょうか?
比較
class XMLWriter {
private final Writer writer;
// more stuff here
public void writeComment(String text) {
writer.write("<!-- ");
writer.write(text);
writer.write(" -->");
}
}
と
class XMLWriter {
private final Writer writer;
// more stuff here
public void writeComment(CharSequence text) {
writer.write("<!-- ");
writer.append(text);
writer.write(" -->");
}
}