Jak przekonwertować String
na CharSequence
w 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ć String
na CharSequence
w 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ć String
gdziekolwiek potrzebujesz CharSequence
lub przypisać a String
do 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ć CharSequence
na a String
, po prostu użyj toString
metody, która musi być zaimplementowana przy każdej konkretnej implementacji CharSequence
.
Mam nadzieję, że to pomoże.
CharSequence
do a String
bez jawnej obsady.
String
do CharSequence
.
CharSequence
. To po prostu przypisuje wystąpienie String
do CharSequence
zmiennej, a ponieważ String
implementuje CharSequence
interfejs, działa kod.
Prosta odpowiedź:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
jest interfejsem, a String
klasa 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.