一个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(" -->");
}
}