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