A String is-a CharSequence. Многие методы в библиотеке Java принимают CharSequence, поэтому работают более широко. Некоторые классы имеют метод String (например, Writer.write(String)), а также реализуют Appendable с помощью эквивалентного метода CharSequence (например, Writer.append(CharSequence)).
Если я пишу класс, который делегирует такой класс, и для него требуется некоторый ввод текста, я могу выбрать для этого ввода String или CharSequence. Выбор более позднего делает класс более гибким, предоставляя клиенту больше опций. Но я не вижу много кода, который делает так: текстовые аргументы почти всегда String, а не CharSequence. Есть ли способ использовать CharSequence? Есть ли успех? Или это просто программист intertia или незнание, которое вызывает использование 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(" -->");
}
}