java - מה יותר נכון בשביל equality

java - מה יותר נכון בשביל equality

אני בונה מחלקה שעושה overide ל equals של object. הפרמטר המתקבל הוא אוביקט Object כך שבנוסף לבדיקת שוויון בתוכן האוביקטים, אני מן הסתם גם צריך לוודא שהאוביקט בפרמטר הוא באמת מאותו סוג כמו האוביקט הבודק. מה יותר נכון - להשתמש ב instanceof לפני בדיקת התוכן, או לעשות ביטוי בוליאני של כמה ANDים (&& כדי שיהיה short circuit) עם casting למחלקה שלי ולשים את הביטוי בתוך try..catch שיתפוס את ClassCastException? מן הסתם שניהם יעבדו, השאלה אם אחת מהדרכים יותר "נכונה". מקווה שהסברתי את עצמי כראוי. תודה!
 

shadowrunner

New member
INSTANCEOF

לדעתי עדיף להשתמש ב instanceof כי זה יותר ברור וגם זה יותר יעיל כי לא נוצר אובייקט מיותר של EXCEPTION
 
אז ככה ידידי...

הבינותי במדוייק את שאלתך. הרי לך המלצתי המקצועית (סתם לידע אני מנהל פיתוח בסביבת Java) לדעתי, הייתי בונה זאת תוך שימוש ב instanceof הסיבה פשוטה אתה בודק אובייקט תוך שימוש בפונקצית השוואה. כרגע שתי השיטות שלך טובות אך קח בחשבון כי במיקרה שבו תכניס שימוש ב Multithreading אזי כי שם השימוש ב instacneof הרבה יותר יעיל מהסיבה הפשוטה שהאובביקט נבדק תוך כדי אתחולו ובמערך של ריבוי תהליכים זה הפתרון האידיאלי. מאידך, שימוש ב Exception Handling לצורך מחלקה אחת במקרה כמו שלך הוא יעיל אך שוב במידה וקיימים הרבה אובייקטים בתכנית מרובת תהליכים שימוש שכזה הנו כתיבת קוד מיותר וארוך. מקווה שעזרתי לך. בהצלחה
 
תודה רבה רבה! ../images/Emo6.gif

השכלתי!
 
למעלה