Làm thế nào để chuyển đổi String
sang CharSequence
trong 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 String
sang CharSequence
trong 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 String
bất cứ nơi nào bạn cần CharSequence
hoặc gán a String
cho 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 CharSequence
thành a String
, chỉ cần sử dụng toString
phươ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.
CharSequence
một String
mà không có diễn viên rõ ràng.
String
cho a CharSequence
.
CharSequence
. Nó chỉ đơn giản gán một thể hiện của String
một CharSequence
biến và vì String
thực hiện CharSequence
giao 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
CharSequence
là một giao diện và String
lớ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.