Jak przekonwertować Stringna CharSequencew Javie?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Jak przekonwertować Stringna CharSequencew Javie?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Odpowiedzi:
Od String IS-A CharSequence możesz przekazać Stringgdziekolwiek potrzebujesz CharSequencelub przypisać a Stringdo CharSequence:
CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"
public void foo(CharSequence cs) {
System.out.println(cs);
}
Jeśli chcesz przekonwertować CharSequencena a String, po prostu użyj toStringmetody, która musi być zaimplementowana przy każdej konkretnej implementacji CharSequence.
Mam nadzieję, że to pomoże.
CharSequencedo a Stringbez jawnej obsady.
Stringdo CharSequence.
CharSequence. To po prostu przypisuje wystąpienie Stringdo CharSequencezmiennej, a ponieważ Stringimplementuje CharSequenceinterfejs, działa kod.
Prosta odpowiedź:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequencejest interfejsem, a Stringklasa implementuje CharSequence.
CharSequence to interfejs, a String jest jedną z implementacji innych niż StringBuilder, StringBuffer i wiele innych.
Tak, jak używasz InterfaceName i = new ItsImplementation(), możesz używać CharSequence cs = new String("string")lub po prostuCharSequence cs = "string";
Możesz użyć
CharSequence[] cs = String[] {"String to CharSequence"};
Próba zapewnienia pewnego (możliwego) kontekstu dla pytania OP poprzez opublikowanie własnych problemów. Pracuję w Scali, ale komunikaty o błędach otrzymuję wszystkie referencyjne typy Java, a komunikat o błędzie brzmi podobnie jak kompilator narzekający, że CharSequence nie jest ciągiem . Potwierdziłem w kodzie źródłowym, że String implementuje interfejs CharSequence, ale komunikat o błędzie zwraca uwagę na różnicę między String a CharSequence, ukrywając prawdziwe źródło problemu:
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)
Byłem w stanie rozwiązać ten problem, wiedząc, że nie chodzi o String / CharSequence, ale raczej o niezgodność między java.lang.Iterable i wbudowaną Iterable Scali.
scala> val header = String.join(",", coll: _*)
header: String = Item,a,b
Mój szczególny problem można również rozwiązać za pomocą odpowiedzi w Scali: dołącz do iterowalnego ciągu znaków
Podsumowując, OP i inni, którzy napotykają podobne problemy, powinni bardzo dokładnie przeanalizować komunikaty o błędach i zobaczyć, jakie konwersje innego typu mogą być związane.