Как конвертировать String
в CharSequence
в Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Как конвертировать String
в CharSequence
в Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Ответы:
Так как String
IS-A CharSequence
, вы можете передать String
туда , куда вам нужно CharSequence
, или назначить String
к CharSequence
:
CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"
public void foo(CharSequence cs) {
System.out.println(cs);
}
Если вы хотите преобразовать a CharSequence
в a String
, просто используйте toString
метод, который должен быть реализован каждой конкретной реализацией CharSequence
.
Надеюсь, поможет.
CharSequence
a String
без явного приведения.
String
a CharSequence
.
CharSequence
. Он просто присваивает экземпляр String
к CharSequence
переменной, и так как String
реализует CharSequence
интерфейс, код работает.
Прямой ответ:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
это интерфейс, а String
класс реализует CharSequence
.
CharSequence - это интерфейс, а String - одна из реализаций, отличных от StringBuilder, StringBuffer и многих других.
Итак, так же, как вы используете InterfaceName i = new ItsImplementation()
, вы можете использовать CharSequence cs = new String("string")
или простоCharSequence cs = "string";
Ты можешь использовать
CharSequence[] cs = String[] {"String to CharSequence"};
Попытка предоставить некоторый (возможный) контекст для вопроса ОП путем публикации моей собственной проблемы. Я работаю в Scala, но в сообщениях об ошибках я получаю все ссылочные типы Java, и сообщение об ошибке читается так же, как компилятор, жалующийся на то, что CharSequence не является String. Я подтвердил в исходном коде, что String реализует интерфейс CharSequence, но сообщение об ошибке обращает внимание на разницу между String и CharSequence, скрывая при этом реальный источник проблемы:
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)
Я смог решить эту проблему, осознав, что проблема не в String / CharSequence, а скорее в несоответствии между java.lang.Iterable и встроенным в Scala Iterable.
scala> val header = String.join(",", coll: _*)
header: String = Item,a,b
Моя конкретная проблема также может быть решена с помощью ответов в Scala: присоединить итерируемую строку
Таким образом, OP и другие, кто сталкивается с подобными проблемами, должны очень внимательно проанализировать сообщения об ошибках и посмотреть, какие преобразования типов могут быть задействованы.