Come convertire String
in CharSequence
in Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Come convertire String
in CharSequence
in Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Risposte:
Da String
IS-A CharSequence
, puoi passare un String
ovunque tu abbia bisogno di CharSequence
, o assegnare un String
a a CharSequence
:
CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"
public void foo(CharSequence cs) {
System.out.println(cs);
}
Se vuoi convertire a CharSequence
in a String
, usa il toString
metodo che deve essere implementato da ogni implementazione concreta di CharSequence
.
Spero che sia d'aiuto.
CharSequence
a a String
senza un cast esplicito.
String
a a CharSequence
.
CharSequence
. Assegna semplicemente un'istanza String
a una CharSequence
variabile e, poiché String
implementa l' CharSequence
interfaccia, il codice funziona.
Risposta diretta:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
è un'interfaccia e la String
classe implementa CharSequence
.
CharSequence è un'interfaccia e String è una delle implementazioni diverse da StringBuilder, StringBuffer e molte altre.
Quindi, proprio come usi InterfaceName i = new ItsImplementation()
, puoi usare CharSequence cs = new String("string")
o semplicementeCharSequence cs = "string";
Puoi usare
CharSequence[] cs = String[] {"String to CharSequence"};
Tentare di fornire un contesto (possibile) alla domanda di OP pubblicando i miei problemi. Sto lavorando in Scala, ma i messaggi di errore ricevono tutti i tipi di Java di riferimento e il messaggio di errore è molto simile al compilatore che si lamenta che CharSequence non è una stringa. Ho confermato nel codice sorgente che String implementa l'interfaccia CharSequence, ma il messaggio di errore richiama l'attenzione sulla differenza tra String e CharSequence nascondendo la vera fonte del 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)
Sono stato in grado di risolvere questo problema con la consapevolezza che il problema non era String / CharSequence, ma piuttosto una discrepanza tra java.lang.Iterable e Iterable incorporato di Scala.
scala> val header = String.join(",", coll: _*)
header: String = Item,a,b
Il mio problema particolare può anche essere risolto tramite le risposte alla Scala: unisciti a un iterabile di stringhe
In sintesi, OP e altri che riscontrano problemi simili dovrebbero analizzare i messaggi di errore molto attentamente e vedere quali altre conversioni di tipo potrebbero essere coinvolte.