Как конвертировать 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.
Надеюсь, поможет.
CharSequencea Stringбез явного приведения.
Stringa 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 и другие, кто сталкивается с подобными проблемами, должны очень внимательно проанализировать сообщения об ошибках и посмотреть, какие преобразования типов могут быть задействованы.