ฉันจะแปลง Java CharSequence
เป็น a ได้String
อย่างไร?
ฉันจะแปลง Java CharSequence
เป็น a ได้String
อย่างไร?
คำตอบ:
โดยการเรียกใช้toString()
วิธีการ
ส่งคืนสตริงที่มีอักขระตามลำดับนี้ในลำดับเดียวกันกับลำดับนี้ ความยาวของสตริงจะเป็นความยาวของลำดับนี้
มีปัญหาเล็กน้อยที่นี่ที่เป็นบิตของ gotcha
วิธีการดำเนินงานที่มีฐานในtoString()
เป็นอินเทอร์เฟซ และแม้ว่าวิธีการจะปรากฏเป็นส่วนหนึ่งของอินเทอร์เฟซนั้นไม่มีอะไรในเวลารวบรวมที่จะบังคับให้คุณแทนที่มันและเคารพข้อ จำกัด เพิ่มเติมที่javadoc ของวิธีการวางไว้บนวิธีการนั้น คือว่ามันควรจะกลับสตริงที่มีตัวอักษรในการสั่งซื้อส่งกลับโดยObject
CharSequence
toString()
CharSequence
toString()
toString()
charAt()
IDE ของคุณจะไม่ได้ช่วยให้คุณออกโดยเตือนว่าคุณว่าคุณอาจจะtoString()
แทนที่ ยกตัวอย่างเช่นใน IntelliJ นี้เป็นสิ่งที่คุณจะเห็นถ้าคุณสร้างใหม่CharSequence
การดำเนินงาน: http://puu.sh/2w1RJ toString()
หมายเหตุกรณีที่ไม่มี
หากคุณเชื่อมั่นtoString()
ในตัวเองCharSequence
มันควรจะทำงานหากผู้CharSequence
ดำเนินการทำงานอย่างถูกต้อง แต่ถ้าคุณต้องการหลีกเลี่ยงความไม่แน่นอนใด ๆ คุณควรใช้ a StringBuilder
และappend()
ดังนี้:
final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
StringBuilder
อาจล้มเหลวในการทำสิ่งที่คุณคาดหวัง เช่นเดียวกับอินเทอร์เฟซอื่น ๆ เช่นList
หรือSet
โดยเฉพาะอย่างยิ่งequals()
และhashCode()
วิธีการที่จะรวบรวมโดยไม่มีการแทนที่ แต่จะต้องถูกแทนที่ตามสัญญา
คุณสามารถใช้ String.valueOf () โดยตรง
String.valueOf(charSequence)
แม้ว่านี่จะเหมือนกับtoString()
การตรวจสอบค่า null charSequence
ก่อนที่จะเรียก toString
สิ่งนี้มีประโยชน์เมื่อเมธอดสามารถส่งคืน a charSequence
หรือnull
ค่า
charSequence
เป็นโมฆะแล้วสตริงกลับจะเป็นและไม่ได้"null"
null
setText(CharSequence)
ไม่ได้ทำในสิ่งที่คุณต้องการ?