วิธีการแปลง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
a CharSequence
:
CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"
public void foo(CharSequence cs) {
System.out.println(cs);
}
หากคุณต้องการที่จะแปลงCharSequence
ไปเป็นString
เพียงแค่ใช้วิธีการที่จะต้องดำเนินการโดยทุกการดำเนินการที่เป็นรูปธรรมของtoString
CharSequence
หวังว่ามันจะช่วย
CharSequence
กับString
โดยไม่ต้องมีนักแสดงที่ชัดเจน
String
CharSequence
CharSequence
แต่รหัสที่ไม่ได้ instantiate มันเพียงกำหนดอินสแตนซ์ของString
ให้กับCharSequence
ตัวแปรและเนื่องจากString
ใช้CharSequence
อินเทอร์เฟซรหัสจึงทำงานได้
คำตอบตรง:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
เป็นอินเตอร์เฟซและการดำเนินการระดับString
CharSequence
CharSequence เป็นอินเทอร์เฟซและสตริงเป็นหนึ่งในการใช้งานอื่น ๆ นอกเหนือจาก StringBuilder, StringBuffer และอื่น ๆ อีกมากมาย
ดังนั้นเช่นเดียวกับที่คุณใช้InterfaceName i = new ItsImplementation()
คุณสามารถใช้CharSequence cs = new String("string")
หรือเพียงแค่CharSequence cs = "string";
คุณสามารถใช้ได้
CharSequence[] cs = String[] {"String to CharSequence"};
พยายามระบุบริบท (ที่เป็นไปได้) สำหรับคำถามของ OP ด้วยการโพสต์ปัญหาของฉันเอง ฉันทำงานใน Scala แต่ข้อความแสดงข้อผิดพลาดฉันได้รับการอ้างอิง Java ทุกประเภทและข้อความแสดงข้อผิดพลาดอ่านมากเช่นคอมไพเลอร์บ่นว่า CharSequence ไม่ใช่สตริง ฉันยืนยันในซอร์สโค้ดที่ 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 และคนอื่น ๆ ที่พบปัญหาที่คล้ายกันควรแยกวิเคราะห์ข้อความแสดงข้อผิดพลาดอย่างใกล้ชิดและดูว่ามีการแปลงประเภทใดที่เกี่ยวข้อง