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