如何将String转换为CharSequence?

时间:2009-09-08 04:31:46

标签: java string charsequence

如何在Java中将String转换为CharSequence

6 个答案:

答案 0 :(得分:248)

由于String IS-A CharSequence,您可以在需要String的任何地方传递CharSequence,或指定{{1}转到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方法。

希望它有所帮助。

答案 1 :(得分:49)

直接回答:

String s = "Hello World!";

// String => CharSequence conversion:

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

CharSequence是一个界面,String类实现了CharSequence

答案 2 :(得分:11)

CharSequence是一个接口,String是除StringBuilder,StringBuffer和许多其他实现之外的其中一个实现。

因此,就像您使用InterfaceName i = new ItsImplementation()一样,您可以使用CharSequence cs = new String("string")或仅使用CharSequence cs = "string";

答案 3 :(得分:3)

您可以使用

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

答案 4 :(得分:0)

尝试通过张贴自己的麻烦来为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和遇到类似问题的其他人员应非常仔细地分析错误消息,并查看可能涉及的其他类型转换。

答案 5 :(得分:0)

这是一个好问题!如果调用使用泛型的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);