如何在Java中将String
转换为CharSequence
?
如何在Java中将String
转换为CharSequence
?
String
是一个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
,只需使用每个CharSequence
具体实现必须实现的toString
方法即可。CharSequence
赋值给String
。 - gustafcCharSequence
。它只是将一个String
实例赋值给一个CharSequence
变量,由于String
实现了CharSequence
接口,所以代码可以工作。 - João SilvaString s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
是一个接口,String
类实现了 CharSequence
接口。
CharSequence是一个接口,String是它的实现之一,除了StringBuilder、StringBuffer和许多其他实现。
因此,就像您使用InterfaceName i = new ItsImplementation()
一样,您可以使用CharSequence cs = new String("string")
或简单地使用CharSequence cs = "string";
标签
CharSequence[] cs = String[] {"String to 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);
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)
scala> val header = String.join(",", coll: _*)
header: String = Item,a,b
我的特定问题也可以通过Scala:连接字符串的可迭代对象中的答案来解决。
总之,原帖以及其他遇到类似问题的人应该仔细解析错误信息,并查看可能涉及的其他类型转换。
String.replace
方法时遇到了类似的错误,尝试使用(Char)
作为参数类型,但它需要两个参数。所以我添加了空字符串作为第二个参数(我认为这是默认值),并将第一个参数转换为字符串(因为它需要匹配Char
或CharSequence
中的两个)。所以,我的错误就是没有仔细阅读参数类型选项而自己调用方法的另一个例子。 - combinatorist
groovy.lang.MissingMethodException异常:没有适用于参数类型(java.lang.String)的静态java.util.regex.Pattern.matcher()方法的签名。
- BlackEye