Làm thế nào để chuyển đổi Stringsang CharSequencetrong Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Làm thế nào để chuyển đổi Stringsang CharSequencetrong Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Câu trả lời:
Kể từ String IS-A CharSequence , bạn có thể vượt qua Stringbất cứ nơi nào bạn cần CharSequencehoặc gán a Stringcho CharSequence:
CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"
public void foo(CharSequence cs) {
System.out.println(cs);
}
Nếu bạn muốn chuyển đổi a CharSequencethành a String, chỉ cần sử dụng toStringphương thức phải được thực hiện bởi mọi triển khai cụ thể CharSequence.
Hy vọng nó giúp.
CharSequencemột Stringmà không có diễn viên rõ ràng.
Stringcho a CharSequence.
CharSequence. Nó chỉ đơn giản gán một thể hiện của Stringmột CharSequencebiến và vì Stringthực hiện CharSequencegiao diện, mã hoạt động.
Câu trả lời thẳng thắn:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequencelà một giao diện và Stringlớp thực hiện CharSequence.
CharSequence là một giao diện và String là một trong những triển khai khác ngoài StringBuilder, StringBuffer và nhiều giao diện khác.
Vì vậy, chỉ cần bạn sử dụng InterfaceName i = new ItsImplementation(), bạn có thể sử dụng CharSequence cs = new String("string")hoặc đơn giản làCharSequence cs = "string";
Bạn có thể dùng
CharSequence[] cs = String[] {"String to CharSequence"};
Cố gắng cung cấp một số bối cảnh (có thể) cho câu hỏi của OP bằng cách đăng tải rắc rối của riêng tôi. Tôi đang làm việc trong Scala, nhưng các thông báo lỗi Tôi nhận được tất cả các loại Java tham chiếu và thông báo lỗi đọc rất nhiều như trình biên dịch phàn nàn rằng CharSequence không phải là Chuỗi. Tôi đã xác nhận trong mã nguồn rằng String thực hiện giao diện CharSequence, nhưng thông báo lỗi thu hút sự chú ý đến sự khác biệt giữa String và CharSequence trong khi ẩn nguồn gốc của sự cố:
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)
Tôi đã có thể khắc phục vấn đề này với việc nhận ra rằng vấn đề không phải là String / CharSequence, mà là sự không phù hợp giữa java.lang.Iterable và Iterable tích hợp sẵn của Scala.
scala> val header = String.join(",", coll: _*)
header: String = Item,a,b
Vấn đề cụ thể của tôi cũng có thể được giải quyết thông qua các câu trả lời tại Scala: tham gia một chuỗi lặp
Tóm lại, OP và những người khác gặp phải vấn đề tương tự nên phân tích các thông báo lỗi rất chặt chẽ và xem những chuyển đổi loại nào khác có thể liên quan.