Come convertire Stringin CharSequencein 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 Stringin CharSequencein 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 Stringovunque tu abbia bisogno di CharSequence, o assegnare un Stringa 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 CharSequencein a String, usa il toStringmetodo che deve essere implementato da ogni implementazione concreta di CharSequence.
Spero che sia d'aiuto.
CharSequencea a Stringsenza un cast esplicito.
Stringa a CharSequence.
CharSequence. Assegna semplicemente un'istanza Stringa una CharSequencevariabile e, poiché Stringimplementa l' CharSequenceinterfaccia, 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 Stringclasse 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.