JavaRush /จาวาบล็อก /Random-TH /10 เคล็ดลับในการเอาชนะเมธอด toString() ใน Java (ตอนที่ 1)...
Ku6ep
ระดับ

10 เคล็ดลับในการเอาชนะเมธอด toString() ใน Java (ตอนที่ 1)

เผยแพร่ในกลุ่ม
10 เคล็ดลับสำหรับการแทนที่เมธอด toString() ใน Java - ToStringBuilder Netbeans Eclipse 10 เคล็ดลับสำหรับการเอาชนะเมธอด toString() ใน Java (ตอนที่ 1) - 1

วิธีการ Java toString

toStringวิธีการใน Java ใช้เพื่อให้ข้อมูลที่ชัดเจนและเพียงพอเกี่ยวกับวัตถุ ( Object) ในรูปแบบที่มนุษย์สามารถอ่านได้ การแทนที่วิธีการที่เหมาะสมtoStringสามารถช่วยในการบันทึกและการดีบักโปรแกรม Java โดยการให้ข้อมูลที่มีคุณค่าและสำคัญ เนื่องจากtoString()ถูกกำหนดไว้ในjava.lang.Objectคลาสและการใช้งานเริ่มต้นไม่ได้ให้ข้อมูลมากนัก แนวทางปฏิบัติที่ดีที่สุดเสมอคือการแทนที่วิธีนี้ในคลาสสืบทอด ในความเป็นจริง หากคุณกำลังสร้างคลาสประเภทที่สำคัญหรือทั่วไปOrderหรือ ให้แทนที่ เท่ากับ , hashCode , comparisonToและเมธอดใน Java เสมอ ตามค่าเริ่มต้น การใช้งานจะสร้างผลลัพธ์ในรูปแบบเช่น ตัวอย่างของเราวิธีการเรียนจะพิมพ์ test.Country@18e2b22 โดยที่ 18e2b22 คือรหัสแฮชของออบเจ็กต์ในรูปแบบเลขฐานสิบหก หากคุณเรียกใช้วิธีhashCodeก็จะส่งคืน 260943370 ซึ่งเป็น เทียบเท่า ทศนิยมของ 18e2b22 ข้อมูลนี้ไม่มีประโยชน์อย่างยิ่งเมื่อค้นหาปัญหา มาดูตัวอย่างในชีวิตจริงที่คุณต้องค้นหาปัญหาในการเชื่อมต่อเครือข่ายของคุณ ในกรณีที่คุณต้องการทราบว่าโฮสต์และพอร์ตใดที่ระบบของคุณพยายามเชื่อมต่อ และหากหรือพิมพ์เฉพาะข้อมูลเริ่มต้นเท่านั้น ก็จะเป็นเช่นนั้น เป็นไปไม่ได้ที่จะจินตนาการถึงปัญหาที่แท้จริง แต่ด้วยการใช้งานที่ถูกแทนที่พวกเขาสามารถให้ข้อมูลที่เป็นประโยชน์ เช่น ชื่อโฮสต์และหมายเลขพอร์ต ในบทช่วยสอน Java นี้ เราจะให้คำแนะนำเกี่ยวกับวิธีการแทนที่ด้วยตัวอย่างโค้ด TradeEmployeetoStringtoStringpackage.class@hashCodetoString()toString()CountrySocketServerSockettoStringtoStringtoString

วิธีแทนที่วิธี toString ใน Java:

พิมพ์วันที่ที่จัดรูปแบบ (เช่น วัน/เดือน/ปี) แทนค่าดิบ toStringนี่เป็นคำใบ้ที่มี ประโยชน์มากเมื่อทำการแทนที่เมธอด Java toString()คลาสปกติjava.util.Dateจะไม่แสดงวันที่ที่จัดรูปแบบและมีรายละเอียดมากมายที่ไม่จำเป็นเสมอไป หากคุณใช้DateFormat บางส่วน เช่น dd-MM-yy ในแอปพลิเคชันของคุณ คุณจะต้องการเห็นรูปแบบนี้แทนที่จะเป็นรูปแบบเริ่มต้นอย่างแน่นอน โดยปกติ IDE จะไม่สร้างเอาต์พุตที่จัดรูปแบบแล้วDateและนี่คือสิ่งที่คุณต้องทำด้วยตัวเอง แต่ก็คุ้มค่า อ่านวิธีพิมพ์วันที่ในรูปแบบ ddMMyy ใน Javaเพื่อดูรายละเอียดเกี่ยวกับการจัดรูปแบบDateใน Java คุณยังสามารถใช้ คลาส SimpleDataFormatหรือไลบรารีเวลา Joda Date สำหรับสิ่งนี้

การจัดทำเอกสารรูปแบบ toString

หากวิธีการของคุณtoString()ไม่แสดงผลข้อมูลเป็น field=value ก็เป็นความคิดที่ดีที่จะบันทึกรูปแบบเอาต์พุตtoStringโดยเฉพาะอย่างยิ่งสำหรับออบเจ็กต์ที่สำคัญ เช่น Employee หรือ Student ตัวอย่างเช่น หากtoString()เมธอดคลาสРаботник(Employee)พิมพ์ " John-101-Sales-9846387321 " แนวทางปฏิบัติที่ดีคือระบุรูปแบบเป็น "name-id-department-contact" แต่ในขณะเดียวกันก็ไม่อนุญาตให้ไคลเอ็นต์รับ ข้อมูลจากเมธอดtoString()คุณควรจัดเตรียมวิธีการที่เหมาะสมสำหรับการดึงข้อมูล เช่นgetName(), getId()และgetContact()อื่นๆ เสมอ เนื่องจากข้อมูลที่ได้รับจากtoString()การแทนอ็อบเจ็กต์มีความเปราะบางและเกิดข้อผิดพลาดได้ง่าย ดังนั้น ไคลเอ็นต์ควรมีพาธที่สะอาดเสมอเพื่อรับ ข้อมูล.

ใช้ StringBuilder เพื่อเขียนผลลัพธ์ของ toString()

หากคุณกำลังเขียนโค้ดสำหรับวิธีการtoString()ใน Java ให้ใช้StringBuilderเพื่อเพิ่มแอตทริบิวต์แต่ละรายการ หากคุณใช้ IDE เช่นEclipse , Netbeans หรือ IntelliJ การใช้StringBuilderเมธอด and append()แทนตัวดำเนินการ + ในการเขียนtoStringก็เป็นวิธีที่จะไปเช่นกัน โดยดีฟอลต์ ทั้ง Eclipse และ Netbeans จะสร้างtoStringด้วยตัวดำเนินการต่อข้อมูล

การใช้คำอธิบายประกอบ @Override

การใช้@Overrideวิธีการแทนที่ใน Java เป็นหนึ่งในแนวทางปฏิบัติที่ดีที่สุดในภาษา แต่คำใบ้นี้ไม่สำคัญเท่ากับในกรณีของการแทนที่เมธอดequals()และcompareTo()เนื่องจากการโอเวอร์โหลดแทนที่จะแทนที่การแทนที่สามารถสร้างข้อผิดพลาดที่ละเอียดอ่อนมากขึ้นซึ่งยากต่อการคำนวณ @Overrrideไม่ ว่าในกรณีใด ควรใช้คำอธิบายประกอบจะดีกว่า

การพิมพ์เนื้อหาของอาร์เรย์แทนการพิมพ์วัตถุอาร์เรย์

อาร์เรย์เป็นวัตถุใน Java แต่ไม่ได้แทนที่วิธีการtoStringและเมื่อคุณพิมพ์อาร์เรย์ รูปแบบเอาต์พุตเริ่มต้นจะไม่มีประโยชน์มากนัก เนื่องจากเราต้องการดูเนื้อหาของอาร์เรย์ นี่เป็นอีกเหตุผลว่าทำไมอาร์เรย์ char[] จึงดีกว่า Stringในการจัดเก็บข้อมูลที่สำคัญเช่นรหัสผ่าน ใช้เวลาพิจารณาว่าการพิมพ์เนื้อหาของอาร์เรย์ช่วยลูกค้าของคุณหรือไม่ และถ้ามันสมเหตุสมผล ให้พิมพ์เนื้อหาของอาร์เรย์แทนตัวออบเจ็กต์เอง เพื่อเหตุผลด้านประสิทธิภาพ ควรใช้ HashSet Collectionดังกล่าวArrayListหรือHashSetแทนArrayในการจัดเก็บอ็อบเจ็กต์อื่นๆ

เคล็ดลับโบนัส

เคล็ดลับโบนัสเพิ่มเติมเกี่ยวกับวิธีการเอาชนะtoStringใน Java
  1. พิมพ์เอาต์พุตtoStringหลายบรรทัดหรือหนึ่งบรรทัดตามความยาว

  2. รวมชื่อคลาสที่มีคุณสมบัติครบถ้วนในการเป็นตัวแทนtoStringหรืออีกนัยหนึ่งpackage.classเพื่อหลีกเลี่ยงความเข้าใจผิด

  3. คุณสามารถข้ามค่าว่างหรือแสดงได้ แต่จะเป็นการดีกว่าที่จะแสดง บางครั้งสิ่งเหล่า นี้ก็มีประโยชน์เนื่องจากจะแสดงว่ามีฟิลด์ใดบ้างnullในระหว่างเหตุการณ์บางอย่าง เช่นNullPointerException

  4. ใช้รูปแบบคีย์-ค่า เช่นmember.name=member.valueIDE ส่วนใหญ่รองรับสิ่งนี้

  5. รวมสมาชิกที่สืบทอดมา ถ้าคุณคิดว่าพวกเขาควรให้ข้อมูลที่จำเป็นแก่คลาสที่สืบทอด

  6. บางครั้งออบเจ็กต์ประกอบด้วยพารามิเตอร์ทางเลือกและพารามิเตอร์ที่จำเป็นจำนวนมาก ดังที่เราแสดงใน ตัวอย่าง เทมเพลต Builder ของเรา ซึ่งแทบจะเป็นไปไม่ได้เลยที่จะพิมพ์ฟิลด์ทั้งหมด ในกรณีนี้ เราสามารถพิมพ์ได้เฉพาะฟิลด์ที่จำเป็น โดยเฉพาะอย่างยิ่งเนื่องจากเรามีฟิลด์ทางเลือก

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION