A String is-a CharSequence. Many methods in the Java library accept CharSequence so they operate more generally. Some classe have a String method (for example, Writer.write(String)) and also implement Appendable with an equivalent CharSequence method (for example, Writer.append(CharSequence)).
If I am writing a class that delegates to such a class, ands needs some text input, I can choose for that input to be a String or a CharSequence. Choosing the later makes the class more flexible, by giving the client more options. But I don't see much code that does so: text arguments are almost invariably a String rather than a CharSequence. Is there a down-side to using CharSequence? Is there a performance hit? Or is it just programmer intertia or ignorance that causes use of String rather than CharSequence?
Compare
class XMLWriter {
   private final Writer writer;
   // more stuff here
   public void writeComment(String text) {
      writer.write("<!-- ");
      writer.write(text);
      writer.write(" -->");
   }
}
with
class XMLWriter {
   private final Writer writer;
   // more stuff here
   public void writeComment(CharSequence text) {
      writer.write("<!-- ");
      writer.append(text);
      writer.write(" -->");
   }
}
 
     
     
    