วิธีการแปลงStringเป็นCharSequenceJava?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
วิธีการแปลงStringเป็นCharSequenceJava?
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หรือมอบหมายStringa CharSequence:
CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"
public void foo(CharSequence cs) {
System.out.println(cs);
}
หากคุณต้องการที่จะแปลงCharSequenceไปเป็นStringเพียงแค่ใช้วิธีการที่จะต้องดำเนินการโดยทุกการดำเนินการที่เป็นรูปธรรมของtoStringCharSequence
หวังว่ามันจะช่วย
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เป็นอินเตอร์เฟซและการดำเนินการระดับStringCharSequence
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 และคนอื่น ๆ ที่พบปัญหาที่คล้ายกันควรแยกวิเคราะห์ข้อความแสดงข้อผิดพลาดอย่างใกล้ชิดและดูว่ามีการแปลงประเภทใดที่เกี่ยวข้อง