equals ב JAVA

ZehuShmi

New member
equals ב JAVA

רציתי לשאול כיצד יותר נכון לעבוד עם הפונקציה EQUALS ע"י יצירת אובייקט חדש או ע"י CASTING:
public boolean equals(Object obj) { if (obj instanceof myClass) { //myClass temp = myClass(obj); //return(member == ((Clock)temp).member); //return temp.member = member; } return false;​
השורות המסומנות ב //
 
לדעתי :

return (member==obj.member);​
כי מן הסתם אם obj הינו אירוע של myClass אז הוא חייב להכיל את החבר מחלקה member ובכך אתה יכול להשוות אותם.
בהצלחה
 

Zack DA

New member
בכל מקרה זה לא נכון,

== לא רלוונטי כאן (זה יהיה נכון למשל אם שניהם null. אתה מעוניין בזה ?). ואני ממליץ לא להשתמש ב- reflection סתם כך, זה מנגנון כבד.
 

ZehuShmi

New member
בקיצור לא הבנתי

במה כדאי להשתמש ב CASTING או יצירת אובייקט מקומי בפונקציה ?
 

Zack DA

New member
זאת שאלה כללית....

זה תלוי במקרה, כמובן. במקרה שלנו (בשאלה הזאת) אנחנו דורכים על equals.
 

Zack DA

New member
אל תשכח,

הכל וירטואלי. אין צורך לבדוק או לעשות upcast - רק תוודא שברמה של האבא ה- equals מומש בצורה נכונה (אלא אם כן אתה רוצה להוסיף פונקציונאליות לבדיקה). בהצלחה !
 

ZehuShmi

New member
תודה - עוד שאלה

אני צריך להדפיס מספרים שלמים אבל שיהיו ברוחב של 5 ספרות. עכשיו במידה והמפר הוא בעל מספר ספרות קטן יותר, האם ניתן ליצור פלט מפורמט כמו ב C, כלומר לשלוט גם על האורך של המחרוזת. חיפשתי ב API של println ולא מצאתי משהו קשור.
 

ZehuShmi

New member
וכמובן שיוסיף

אפסים מימין לפי הצורך כך שיוצג ב 5 ספרות.
 

Zack DA

New member
תחשוב לבד,

אני רק אכוון אותך לרעיון - מניפולציה מתמטית על המספר --> toString --> הדפסה של תת-מחרוזת.
 

ZehuShmi

New member
החלטתי לממש את הדרישה הזו

בעצמי, זה די קצר ופשוט אבל מעניין אם בJAVA יש דברים כאלה. בכל מקרה אני לא מצאתי.
 

ZehuShmi

New member
לא מצאתי אפשרות לשלוט על רוחב

הפלט של המספר , כלומר משהו בסגנון האפשרויות של printf ב C, ו/או שיוסיף אפסים מימין. הלכת בכיוון שנתת שהוא כמובן הגיוני, דשדשתי ב String , StringBuffer ולא מצאתי.
 

ZehuShmi

New member
בדיוק שם חיפשתי

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

Zack DA

New member
נו, ומה נראה לך substring ?

כאן זה לא C או CPP. אין כאן printf, זה קונספט מיושן. תוסיף את מה שאתה צריך לפי הצורך.
 

ZehuShmi

New member
אבל זו היתה השאלה שלי

לעשות לבד אני יודע אין בזה שום עניין מורכב, עשיתי את זה בדקה, זה לא העניין. רציתי לדעת אם זה קיים ואם כן איך זה מתבצע. את הפונקציות שמבצעות מניפולציות במחרוזות אני מכיר פחות או יותר.
 

Zack DA

New member
יכול להיות,

לא מסובך לכתוב לבד חבילה כזאת. אבל לצורך שלך, אני מנסה להסביר שאתה אפילו לא צריך באופן מלאכותי להוסיף אפסים...
 
למעלה