การส่งเสริม
มหาวิทยาลัยชวา
การเรียนรู้
หลักสูตร
งาน
แบบสำรวจและแบบทดสอบ
เกม
ช่วย
กำหนดการ
ฝึกงาน
ชุมชน
ผู้ใช้
ฟอรั่ม
แชท
บทความ
เรื่องราวความสำเร็จ
กิจกรรม
บทวิจารณ์
การสมัครรับข้อมูล
ธีมสว่าง
บทความ
  • บทวิจารณ์
  • เกี่ยวกับเรา
  • CS50
เริ่ม
เริ่มเรียนรู้
  • บทความ
  • ผู้เขียน
  • ทุกกลุ่ม
  • รายการบทความทั้งหมด
JavaRush /บล็อกจาวา /Random-TH /10 เคล็ดลับในการเอาชนะเมธอด toString() ใน Java (ตอนที่ 2)...
Ku6ep
ระดับ
  • 28 February 2021
  • 395 views
  • 0 comments

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

เผยแพร่ในกลุ่ม
Java-университет

ตัวอย่าง toString ใน Java

เราจะใช้คลาสต่อไปนี้เพื่อแสดงตัวอย่าง toString ของเราสำหรับยูทิลิตี้ ToStringBuilder ของ Netbeans, Eclipse และ Apache

/** * Java программа, демонстрирующая How переопределить метод toString() в Java. * Эта Java программа показывает How вы можете использовать IDE типа Netbeans or Eclipse * и открытую библиотеку типа Apache commons ToStringBuilder для * переопределения toString в Java. * @author Javarevisited.blogspot.com */ public class Country { private String name; private String capital; private long population; private Date independenceDay; public Country(String name){ this.name = name; } public String getName(){ return name; } public void setName(String name) {this.name = name;} public String getCapital() {return capital;} public void setCapital(String capital) {this.capital = capital;} public Date getIndependenceDay() {return independenceDay;} public void setIndependenceDay(Date independenceDay) {this.independenceDay = independenceDay;} public long getPopulation() { return population; } public void setPopulation(long population) {this.population = population; } @Override public String toString() { return "Country{" + "capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + '}'; } public void setIndependenceDay(String date) { DateFormat format = new SimpleDateFormat("dd/MM/yyyy"); try { this.independenceDay = format.parse(date); } catch (ParseException ex) { Logger.getLogger(Country.class.getName()).log(Level.SEVERE, null, ex); } } public static void main(String args[]) { Country India = new Country("India"); India.setCapital("New Delhi"); India.setIndependenceDay("15/07/1947"); India.setPopulation(1200000000); System.out.println(India); } }

วิธีการ toString ที่สร้างโดย Netbeans IDE


วิธีการ toString ที่สร้างโดย Netbeans IDE สร้างผลลัพธ์ต่อไปนี้สำหรับคลาสที่กำหนดไว้ข้างต้น:

Country{capital=New Delhi, population=1200000000, independenceDay=Fri Aug 15 00:00:00 VET 1947}

หากคุณดูที่เอาต์พุตด้านบน คุณจะเห็นว่า Netbeans ไม่ได้สร้างวันที่ที่จัดรูปแบบให้คุณ แต่กลับเรียกเมธอด toString() ของคลาส java.util.Date

วิธีการ toString() ที่สร้างโดย Rclise IDE


ตามค่าเริ่มต้น Eclipse จะสร้างเมธอด toString ต่อไปนี้:

@Override public String toString() { return "Country [name=" + name + ", capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + "]"; }

คุณสามารถสร้างโค้ดสำหรับเมธอด toString ใน Eclipse ได้โดยคลิกที่ Source --> Generate toString() นอกจากนี้ยังมีความเป็นไปได้หลายอย่าง เช่น การเลือกสไตล์โค้ด นั่นคือ การใช้ตัวถูกดำเนินการการต่อข้อมูลหรือStringBuilderและอื่นๆ ด้านล่างนี้คือผลลัพธ์ของเมธอด toString() ที่เราเพิ่งสร้างใน Eclipse:

Country [name=India, capital=New Delhi, population=1200000000, independenceDay=Tue Jul 15 00:00:00 VET 1947]

การใช้ ToStringBuilder เพื่อแทนที่ toString() วิธีการของ Java

นอกจากคลาสที่มีประโยชน์มากมาย เช่นPropertyUtils , EqualsBuilder หรือ HashCodeBuilder แล้ว Apache ยังมี ToStringBuilder ซึ่งสามารถสร้างโค้ดเพื่อส่งออกเมธอด toString() ในรูปแบบที่แตกต่างกันได้หลากหลาย มาดูกันว่าผลลัพธ์ของเมธอด toString มีลักษณะเป็นอย่างไรในรูปแบบเรียบง่ายและหลายบรรทัด: สไตล์เรียบง่าย:

India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947

สไตล์หลายบรรทัด:

test.Country@f0eed6[
 name=India
 capital=New Delhi
 population=1200000000
 independenceDay=Fri Aug 15 00:00:00 VET 1947
 ]

NO_FIELD_NAMES_STYLE (สไตล์ที่ไม่มีชื่อฟิลด์)

test.Country@1d05c81[India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947]

SHORT_PREFIX_STYLE (รูปแบบคำนำหน้าแบบสั้น)

Country[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

ToStringStyle.DEFAULT_STYLE (สไตล์เริ่มต้น)

test.Country@1d05c81[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

Guavaเป็นไลบรารีโอเพ่นซอร์สที่คล้ายกันจาก Google นอกจากนี้ยังมี API ที่สะดวกสำหรับการสร้างโค้ดสำหรับวิธี toString ใน Java

เมื่อเรียกใช้เมธอด toString ใน Java

toString เป็นวิธีการที่ค่อนข้างเฉพาะเจาะจงและถูกเรียกจากวิธีการ JavaAPI หลายวิธี เช่น println(), printf() , logging, assert คำสั่ง , ดีบักเกอร์ IDE เมื่อพิมพ์คอลเลกชัน และเมื่อเชื่อมต่อกัน หากคลาสย่อยไม่ได้แทนที่ toString() ดังนั้นการใช้งานเริ่มต้นที่กำหนดไว้ในคลาส Object จะถูกเรียก นักพัฒนาจำนวนมากใช้ API การบันทึกเช่น Log4J หรือ java.util.Logger เพื่อส่งออกบันทึกและมักจะพลาด Object ที่นี่

logger.info("Customer not found:" + customer)

และหากลูกค้าไม่แทนที่ toString และส่งออกข้อมูลสำคัญ เช่น customerId, customerName เป็นต้น การวินิจฉัยปัญหาจะค่อนข้างยาก นี่คือเหตุผลว่าทำไมการแทนที่ toString ใน Java จึงคุ้มค่าเสมอ เรามาดูประโยชน์บางประการหากเราทำเช่นนี้

ประโยชน์ของการแทนที่วิธี toString

  1. ตามที่กล่าวไว้ข้างต้น toString ที่ถูกแทนที่อย่างเหมาะสมจะช่วยแก้ไขจุดบกพร่องโดยการพิมพ์ข้อมูลที่สำคัญออกมา
  2. หากวัตถุสำคัญถูกเก็บไว้ในคอลเลกชัน การพิมพ์คอลเลกชันจะเรียกใช้เมธอด toString ของวัตถุที่เก็บไว้ ซึ่งสามารถพิมพ์ข้อมูลสำคัญออกมาได้ ตัวอย่างคลาสสิกอย่างหนึ่งของเมธอด toString ที่ไม่ได้แทนที่คือ Array ใน Java ซึ่งพิมพ์ผลลัพธ์ของการใช้งานเริ่มต้นแทนเนื้อหาของอาร์เรย์ แม้ว่าจะมีหลายวิธีในการพิมพ์เนื้อหาของอาร์เรย์โดยใช้ Arrays.toString() และอื่นๆ แต่เนื่องจาก Array เป็นอ็อบเจ็กต์ Java มันจะดีกว่ามากถ้ามันรู้วิธีพิมพ์เอง เช่นเดียวกับคลาสคอลเลกชันเช่นList หรือ Set

นี่เป็นเพียงประโยชน์บางส่วนที่คุณจะได้รับจากการใช้งานหรือการแทนที่เมธอดtoString ใน Javaมีประโยชน์อีกมากมายที่คุณจะได้รับและเรียนรู้ด้วยตนเอง ฉันหวังว่าเคล็ดลับเหล่านี้จะช่วยให้คุณได้รับประโยชน์สูงสุดจากการใช้งาน toString แจ้งให้เราทราบหากคุณทราบวิธีการพิเศษในการทำงานกับ toString ที่ช่วยเหลือคุณในแอปพลิเคชัน Java ของคุณ

Python-университет
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
เรียนรู้
  • Курси програмування
  • การลงทะเบียน
  • หลักสูตรจาวา
  • ช่วยงาน
  • ราคา
  • โครงการเกม
ชุมชน
  • ผู้ใช้
  • บทความ
  • ฟอรั่ม
  • แชท
  • เรื่องราวความสำเร็จ
  • กิจกรรม
บริษัท
  • เกี่ยวกับเรา
  • ติดต่อ
  • บทวิจารณ์
  • คำถามที่พบบ่อย
  • สนับสนุน
JavaRush JavaRush เป็นหลักสูตรออนไลน์สำหรับการเรียนรู้การเขียนโปรแกรม Java ตั้งแต่เริ่มต้น หลักสูตรนี้เป็นวิธีที่สมบูรณ์แบบสำหรับการเรียนรู้ Java สำหรับผู้เริ่มต้น ประกอบด้วยงานมากกว่า 1,200 รายการพร้อมการตรวจสอบทันทีและขอบเขตที่จำเป็นของทฤษฎีพื้นฐานของ Java เพื่อช่วยให้คุณประสบความสำเร็จในด้านการศึกษา เราได้ใช้ชุดคุณลักษณะที่สร้างแรงบันดาลใจ: แบบทดสอบ โครงการเขียนโค้ด เนื้อหาเกี่ยวกับการเรียนรู้อย่างมีประสิทธิภาพ และอาชีพของนักพัฒนา Java
ตามเรามา
โปรแกรมเมอร์ไม่ได้เกิดมา © 2025 JavaRush
ดาวน์โหลดแอป
  • Google Play
  • App Store
Mastercard Visa
โปรแกรมเมอร์ไม่ได้เกิดมา © 2025 JavaRush