A String
is-a CharSequence
. Many methods in the Java library accept CharSequence
so they operate more generally. Some classe have a String
method (for example, Writer.write(String)
) and also implement Appendable
with an equivalent CharSequence
method (for example, Writer.append(CharSequence)
).
If I am writing a class that delegates to such a class, ands needs some text input, I can choose for that input to be a String
or a CharSequence
. Choosing the later makes the class more flexible, by giving the client more options. But I don't see much code that does so: text arguments are almost invariably a String
rather than a CharSequence
. Is there a down-side to using CharSequence
? Is there a performance hit? Or is it just programmer intertia or ignorance that causes use of String
rather than CharSequence
?
Compare
class XMLWriter {
private final Writer writer;
// more stuff here
public void writeComment(String text) {
writer.write("<!-- ");
writer.write(text);
writer.write(" -->");
}
}
with
class XMLWriter {
private final Writer writer;
// more stuff here
public void writeComment(CharSequence text) {
writer.write("<!-- ");
writer.append(text);
writer.write(" -->");
}
}
Quoting
CharSequence
Javadoc:Hence IMO We must think twice before using CharSequnce as a replacement for String.