casting ב java - להריץ מתודה?

casting ב java - להריץ מתודה?

אני מנסה לעשות את הדבר הבא: יש לי מחלקה X. יש לי אוביקט שמגיע אלי כפרמטר של פונקציה, אבל הוא מגיע כסוג Object, ולא כסוג X. אני רוצה נגיד להפעיל את הפונקציה Func מהאוביקט הזה, אז ניסיתי ככה:
(X) MyObj.Func ()​
מתוך הנחה שיהיה casting מ object ל- x ואז תרוץ הפונקציה. אבל זה לא עובד - הצלחתי להפעיל את הפונקציה רק ככה:
X TempObj = (X)MyObj; TempObj.Func ();​
האם חייבים לבצע את השלב ביניים הזה? (ממש להגדיר אוביקט אחר מהטיפוס שאני רוצה), או שסתם פספסתי משהו עם ה casting? בהזדמנות זו אני רוצה להתנצל על מבול השאלות ב Java (צעדים ראשונים שם
) ולהגיד תודה רבה רבה לכל מי שעוזר או מנסה לעזור!
 
מה הכוונה? איפה חסר? שמתי סוגריים

הסינטקס הוא לא כזה? :
(type_to_cast_to) obj_name​
צריך סוגריים מסביב להכל? ואם כן - איפה אני שם את הנקודה בשביל לקרוא לפונקציה - בתוך או מחוץ לסוגריים? אם אפשר - תוכל לכתוב את הסינטקס המדוייק? תודה!
 

voguemaster

New member
התחביר...

הנה הצורה הנכונה:
((X) MyObj).func();​
העניין הוא שבצורה שרשמת את ה-CAST, ה-CAST פועל על התוצאה המוחזרת מקריאה לפונקציה שבאובייקט. זה לא נכון מכמה סיבות: 1. באופן עקרוני המהדר יצעק עלייך כי אתה מנסה לקרוא למתודה func() באובייקט מסוג Object (דבר שהוא לא "מכיר" ללא ה-CAST). 2. גם אם נניח וזה היה מצליח לך, ה-CAST שביצעת מבצע CAST לערך המוחזר מהפונציה func, מה שלא הגיוני כלל אם היא מחזירה לדוגמא טיפוס בסיסי, ומה שעוד יותר מוזר אם היא הייתה מחזירה איזשהו אובייקט אחר, מה שבפוטנציאל יכול להיות אפילו גרוע יותר! בכל אופן, אני מקווה שעזרתי..
 
למעלה