JavaRush /בלוג Java /Random-HE /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, Tradeאו Employee, תעקוף תמיד שווה , hashCode , compareTo ושיטות toStringב-Java. כברירת מחדל המימוש toStringמייצר פלט בצורה , package.class@hashCodeלמשל לדוגמא שלנו שיטת המחלקה תדפיס test.Country@18e2b22 כאשר 18e2b22 הוא קוד ה-hash של האובייקט בהקסדצימלי, אם תקרא לשיטת hashCode זה יחזיר 260943370 שהוא ה- מקבילה עשרונית של 18e2b22. מידע זה אינו שימושי במיוחד בעת חיפוש בעיה. בוא נסתכל על דוגמה מהחיים האמיתיים שבה אתה צריך למצוא בעיה בחיבור הרשת שלך, במקרה שאתה רוצה לדעת לאיזה מארח ויציאה המערכת שלך מנסה להתחבר ואם או רק תדפיס את מידע ברירת המחדל, זה יהיה בלתי אפשרי לדמיין את הבעיה האמיתית, אבל עם יישום מוחלף הם יכולים לספק מידע שימושי כגון שם מארח ומספר יציאה. במדריך זה של ג'אווה אנו נותנים כמה טיפים על דריסת שיטה עם דוגמאות קוד. toString()toString()CountrySocketServerSockettoStringtoStringtoString

כיצד לעקוף את שיטת toString ב-Java:

הדפס את התאריך המעוצב (כלומר יום/חודש/שנה) במקום הערך הגולמי. זהו רמז שימושי מאוד בעת עקיפת שיטת Java toString. toString()המחלקה הרגילה java.util.Dateלא מוציאה תאריך מעוצב וכוללת הרבה פרטים שלא תמיד יש צורך בהם. אם אתה משתמש ב-DateFormat חלקי , כלומר. dd-MM-yy ביישום שלך, אז אתה בהחלט רוצה לראות את הפורמט הזה במקום את ברירת המחדל. ה-IDE בדרך כלל לא מייצר פלט מעוצב Dateוזה משהו שתצטרכו לעשות בעצמכם, אבל זה שווה את זה. קרא כיצד להדפיס תאריך בפורמט ddMMyy ב-Java לפרטים על עיצוב Dateב-Java. אתה יכול גם להשתמש במחלקה SimpleDataFormat או בספריית Joda Date זמן בשביל זה.

תיעוד פורמט toString

אם השיטה שלך toString()לא מפלטת נתונים כשדה=ערך, אז כדאי לתעד את פורמט הפלט 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 לאחסון נתונים רגישים כמו סיסמה. הקדישו זמן לבחון האם הדפסת התוכן של מערך עוזרת ללקוחות שלכם או לא, ואם זה הגיוני, אז הדפיסו את התוכן של המערך במקום האובייקט עצמו. מטעמי ביצועים, עדיף להשתמש Collectionבכזה ArrayListאו ב-HashSet במקום Arrayלאחסון אובייקטים אחרים.

טיפים לבונוס

עוד כמה עצות בונוס על דריסת שיטה toStringב-Java.
  1. הדפס פלט toStringבמספר שורות או בשורות אחת בהתאם לאורכו.

  2. כלול שמות כיתות מלאים בייצוג toString, במילים אחרות package.classכדי למנוע אי הבנה.

  3. אתה יכול לדלג על ערכי null או להציג אותם, אבל עדיף להציג אותם. לפעמים הם שימושיים מכיוון שהם מראים איזה שדה קיים nullבמהלך אירוע כלשהו, ​​למשל NullPointerException .

  4. השתמש בפורמט מפתח-ערך, לדוגמה member.name=member.value, רוב ה-IDEs תומכים בכך.

  5. כלול חברים שעברו בירושה אם אתה חושב שהם צריכים לספק מידע הכרחי לכיתה היורשת.

  6. לפעמים אובייקט מכיל פרמטרים אופציונליים ונדרשים רבים, כפי שהראינו בדוגמה שלנו לתבנית Builder , כאשר כמעט בלתי אפשרי להדפיס את כל השדות, במקרה זה נוכל להדפיס רק את השדות הנדרשים, במיוחד שיש לנו שדות אופציונליים.

הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION