303

如何转换StringCharSequenceJava?

4

6 回答 6

291

由于String IS-A CharSequence,您可以String在需要 a 的任何地方传递 a CharSequence,或将 a 分配String给 a CharSequence

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

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

如果要将 a 转换CharSequence为 a String,只需使用 的toString每个具体实现都必须实现的方法CharSequence

于 2009-09-08T04:34:17.630 回答
75

直接回答:

String s = "Hello World!";

// String => CharSequence conversion:

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

CharSequence是一个接口,String类实现CharSequence.

于 2014-08-06T13:10:01.740 回答
13

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

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

于 2016-01-27T23:48:12.513 回答
4

您可以使用

CharSequence[] cs = String[] {"String to CharSequence"};
于 2014-09-22T18:58:33.703 回答
2

这是个好问题!如果您调用使用泛型的 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);
于 2020-11-30T08:21:48.593 回答
1

试图通过发布我自己的麻烦来为 OP 的问题提供一些(可能的)上下文。我在 Scala 中工作,但我收到的所有错误消息都引用了 Java 类型,并且错误消息读起来很像编译器抱怨 CharSequence不是字符串。我在源码中确认了String实现了CharSequence接口,但是错误信息提请注意String和CharSequence的区别,同时隐藏了问题的真正根源:

scala> cols
res8: Iterable[String] = List(Item, a, b)

scala> val header = String.join(",", cols)
<console>:13: error: overloaded method value join with alternatives:
  (x$1: CharSequence,x$2: java.lang.Iterable[_ <: CharSequence])String <and>
  (x$1: CharSequence,x$2: CharSequence*)String
 cannot be applied to (String, Iterable[String])
       val header = String.join(",", cols)

我意识到问题不是 String / CharSequence,而是 java.lang.Iterable 和 Scala 的内置 Iterable 之间的不匹配,从而解决了这个问题。

scala> val header = String.join(",", coll: _*)
header: String = Item,a,b

我的特殊问题也可以通过Scala 的答案来解决:join an iterable of strings

总之,遇到类似问题的 OP 和其他人应该非常仔细地解析错误消息,看看可能涉及哪些其他类型转换。

于 2018-09-18T15:20:27.763 回答