如何在Java中转换字符串到CharSequence ?


当前回答

这是个好问题!如果您调用了使用泛型的API,并希望使用泛型类型的不同子类型赋值或返回结果,则可能会遇到麻烦。Java 8有助于转换:

    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);

其他回答

你可以使用

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

直接的答案:

String s = "Hello World!";

// String => CharSequence conversion:

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

CharSequence是一个接口,String类实现了CharSequence。

这是个好问题!如果您调用了使用泛型的API,并希望使用泛型类型的不同子类型赋值或返回结果,则可能会遇到麻烦。Java 8有助于转换:

    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);

CharSequence是一个接口,而String是它的实现之一,而不是StringBuilder、StringBuffer和许多其他实现。

所以,就像你使用InterfaceName i = new ItsImplementation(),你可以使用CharSequence cs = new String(" String ")或简单的CharSequence cs = " String ";

由于String是- a CharSequence,你可以在任何需要CharSequence的地方传递一个String,或者将一个String赋值给一个CharSequence:

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

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

如果你想把一个CharSequence转换成一个String,只需使用toString方法,这个方法必须由CharSequence的每个具体实现实现。