一个String 是一个 CharSequence。Java 库中的许多方法都接受CharSequence,因此它们的操作更普遍。一些类有一个String方法(例如,Writer.write(String)),并且还Appendable使用等效的CharSequence方法(例如,Writer.append(CharSequence))实现。
如果我正在编写一个委托给这样一个类的类,并且需要一些文本输入,我可以选择该输入是 aString或 a CharSequence。通过为客户提供更多选择,选择后者使课程更加灵活。但我没有看到太多这样做的代码:文本参数几乎总是 aString而不是 a 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(" -->");
}
}