Como converter String
para CharSequence
Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Como converter String
para CharSequence
Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Respostas:
Desde o String
IS-A CharSequence
, você pode passar um String
onde quer que você precise CharSequence
ou atribuir um String
a CharSequence
:
CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"
public void foo(CharSequence cs) {
System.out.println(cs);
}
Se você deseja converter um CharSequence
para a String
, basta usar o toString
método que deve ser implementado em todas as implementações concretas de CharSequence
.
Espero que ajude.
CharSequence
a a String
sem uma conversão explícita.
String
a a CharSequence
.
CharSequence
. Ele simplesmente atribui uma instância de String
a uma CharSequence
variável e, como String
implementa a CharSequence
interface, o código funciona.
Resposta direta:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
é uma interface e a String
classe é implementada CharSequence
.
CharSequence é uma interface e String é uma das implementações que não são StringBuilder, StringBuffer e muitas outras.
Então, assim como você usa InterfaceName i = new ItsImplementation()
, você pode usar CharSequence cs = new String("string")
ou simplesmenteCharSequence cs = "string";
Você pode usar
CharSequence[] cs = String[] {"String to CharSequence"};
Tentando fornecer algum contexto (possível) para a pergunta do OP, publicando meu próprio problema. Estou trabalhando no Scala, mas as mensagens de erro estão recebendo todos os tipos Java de referência e a mensagem de erro é muito parecida com o compilador reclamando que CharSequence não é uma String. Confirmei no código-fonte que String implementa a interface CharSequence, mas a mensagem de erro chama a atenção para a diferença entre String e CharSequence enquanto oculta a fonte real do problema:
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)
Consegui corrigir esse problema com a constatação de que o problema não era String / CharSequence, mas uma incompatibilidade entre java.lang.Iterable e o Iterable interno do Scala.
scala> val header = String.join(",", coll: _*)
header: String = Item,a,b
Meu problema específico também pode ser resolvido através das respostas em Scala: junte-se a uma iterável de strings
Em resumo, o OP e outras pessoas que se deparam com problemas semelhantes devem analisar as mensagens de erro com muita atenção e ver quais outras conversões de tipo podem estar envolvidas.