How to convert a String to CharSequence?

394,804

Solution 1

Since String IS-A CharSequence, you can pass a String wherever you need a CharSequence, or assign a String to a CharSequence:

CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"

public void foo(CharSequence cs) { 
  System.out.println(cs);
}

If you want to convert a CharSequence to a String, just use the toString method that must be implemented by every concrete implementation of CharSequence.

Solution 2

Straight answer:

String s = "Hello World!";

// String => CharSequence conversion:

CharSequence cs = s;  // String is already a CharSequence

CharSequence is an interface, and the String class implements CharSequence.

Solution 3

CharSequence is an interface and String is its one of the implementations other than StringBuilder, StringBuffer and many other.

So, just as you use InterfaceName i = new ItsImplementation(), you can use CharSequence cs = new String("string") or simply CharSequence cs = "string";

Solution 4

You can use

CharSequence[] cs = String[] {"String to CharSequence"};

Solution 5

That's a good question! You may get into troubles if you invoke API that uses generics and want to assign or return that result with a different subtype of the generic type. Java 8 helps to transform:

    List<String> input = new LinkedList<>(Arrays.asList("a", "b", "c"));
    List<CharSequence> result;
    
//    result = input; // <-- Type mismatch: cannot convert from List<String> to List<CharSequence>
    result = input.stream().collect(Collectors.toList());
    
    System.out.println(result);
Share:
394,804

Related videos on Youtube

Daksh Gargas
Author by

Daksh Gargas

"That if statement had something else afterwards. (Pun intended)" I miss working on swift. Loves to play with 0s and 1s. Prefers using enums.

Updated on July 17, 2021

Comments

  • Daksh Gargas
    Daksh Gargas almost 3 years

    How to convert String to CharSequence in Java?

    • Jeff Scott Brown
      Jeff Scott Brown about 10 years
      The question is kind of non sensical. Converting a String to a CharSequence is like converting a flute to a musical instrument. A String already is a CharSequence. The String class implements the CharSequence interface.
    • Raedwald
      Raedwald over 9 years
      The OP's confusion might stem from not knowing what it means to program to an interface
    • Kheldar
      Kheldar over 9 years
      @JeffScottBrown the question actually makes sense, it's a legitimate wonder to anyone reading through the Android or Java doc and missing the detail that CharSequence is not a class. Your comment helped me, but if the question had not been worded the way it is, i wouldn't have found it and have spent more time looking for an answer than it's really worth ;)
    • BlackEye
      BlackEye about 9 years
      I came to this question in the context of a groovy Problem: Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
    • Vighnesh
      Vighnesh almost 7 years
      Here's how I'd advice @JeffScottBrown to reword his comment- "The String class implements (IS-A) the CharSequence interface so you can pass in a String in place of a CharSequence. It's like how you could refer to a flute as a musical instrument because a flute IS-A musical instrument"
  • gustafc
    gustafc almost 15 years
    Except that you can't assign a CharSequence to a String without an explicit cast.
  • João Silva
    João Silva almost 15 years
    Fixed the example, thanks. I meant the other way around, i.e., assign a String to a CharSequence.
  • Mugen
    Mugen over 13 years
    I'm confused by this code "CharSequence cs = "string"; ". How can we instantiate a CharSequence? Isn't that an Interface? (Sorry I'm still learning Java).
  • João Silva
    João Silva over 13 years
    You are correct. It is indeed an interface. However, that code does not instantiate a CharSequence. It simply assigns an instance of String to a CharSequence variable, and since String implements the CharSequence interface, the code works.
  • trante
    trante over 10 years
    This is not the answer. Question is String -> to -> CharSequence. Answer is reverse.
  • Alex A.
    Alex A. over 10 years
    This answers both. Poster first trivially resolves the String -> CharSequence problem by explaining that a String IS a CharSequence. Then poster answers how to go from CharSequence to String.
  • Jean-Rémy Revy
    Jean-Rémy Revy almost 10 years
    Welcome to Stack Overflow Lucas. Please provide more explanation than a code snippet. It may be obvious for us, but help others letting them know why this code answer the question.
  • tishma
    tishma about 7 years
    Wrapping a string into an array doesn't help making a point that String is a CharSequence (and hence that array of CharSequence is array of String).
  • avez raj
    avez raj over 6 years
    CharSequence[] cs = new CharSequence[] {"String to CharSequence"};