ฉันจะแปลง Java CharSequenceเป็น a ได้Stringอย่างไร?
ฉันจะแปลง Java CharSequenceเป็น a ได้Stringอย่างไร?
คำตอบ:
โดยการเรียกใช้toString()วิธีการ
ส่งคืนสตริงที่มีอักขระตามลำดับนี้ในลำดับเดียวกันกับลำดับนี้ ความยาวของสตริงจะเป็นความยาวของลำดับนี้
มีปัญหาเล็กน้อยที่นี่ที่เป็นบิตของ gotcha
วิธีการดำเนินงานที่มีฐานในtoString() เป็นอินเทอร์เฟซ และแม้ว่าวิธีการจะปรากฏเป็นส่วนหนึ่งของอินเทอร์เฟซนั้นไม่มีอะไรในเวลารวบรวมที่จะบังคับให้คุณแทนที่มันและเคารพข้อ จำกัด เพิ่มเติมที่javadoc ของวิธีการวางไว้บนวิธีการนั้น คือว่ามันควรจะกลับสตริงที่มีตัวอักษรในการสั่งซื้อส่งกลับโดยObjectCharSequencetoString()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)ไม่ได้ทำในสิ่งที่คุณต้องการ?