יעילות של casting ב java

יעילות של casting ב java

יש לי תהייה - האם פעולת ה casting תובענית? אם יש לי מצב שבו אני צריך לבחור בין לעשות 3 פעמים casting בין object למחלקה שלי, או פשוט ליצור אוביקט חדש מסוג המחלקה שלי ולעשות casting פעם אחת לאוביקט המקורי, אז מה יותר יעיל - לעשות 3 פעמים casting או ליצור אוביקט חדש שיעשה reference לאוביקט המקורי? הממ... זה בטח לא היה מובן... מה עדיף - ככה:
((X)obj).x==myObj.x && ((X)obj).y==myObj.y;​
או ככה:
X myNewObj = (X) obj; myNewObj.x==myObj.x && myNewObj.y==myObj.y;​
תודה לכל העונים!
 

voguemaster

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

אבל בהסתייגות, אם הקוד לא רץ בלולאה ממש הרבה פעמים, זה גם לא ישנה לאף אחד ולא תשים לב להבדל. בהנחה שהוא כן רץ ודורש אופטימיזציה, תחשוב על העניין בצורה כזו: CAST מרפרנס של אובייקט לרפרנס אחר דומה מאוד (אבל לא בדיוק) ל-CAST בין פוינטרים שהוא למעשה פעולה רק עבור הקומפיילר. במקרה של ג´אווה זה קצת יותר מכך, אבל עדיין העלות היא קטנה. יצירת אובייקט חדש מכניסה תקורה לפעולה. הקצאת הזיכרון ואתחול האובייקט לדוגמא. אם הקוד רץ הרבה הרבה פעמים, אתה יכול כבר לנחש שזה יעבוד יותר לאט מאפשר רק שימוש ב-CAST. בנוסף, אם הקוד רץ הרבה פעמים, אתה מקצה הרבה זיכרון, אז בזהירות. כמו שאמרתי, אם הקוד לא רץ הרבה פעמים בשניה, זה לא ממש משנה.. אלי
 
הרי לך...שלא תגיד שאנשי תוכנה לא

משקיעים במתן פתרונות..
הרי לך קצת מידע על Casting ואני מדבר על Upcasting ועל Downcasting מקווה שזה יעזור לך.... כל טוב
 
תודה רבה! ../images/Emo13.gif שאלה קטנה על הכתוב:

את ה casting הבנתי לחלוטין - תודה על ההסבר המעמיק (היה לי קל להשוות הרבה דברים להתנהגות interfaceים ב COM אחרי ההסבר הזה). שאלה קצת לא קשורה על הקוד שכתבת: בדוגמה של ה Instrument, אתה פונה לפונקציה tune בצורה הבאה: Instrument.tune (flute). האם הפנייה לפונקציה יכולה להתבצע ללא אוביקט אלא ישירות דרך שם המחלקה (אין לך instance של instrument - אתה פונה ישירות לשם המחלקה) מכיוון שזו פונקציה סטטית?
 

voguemaster

New member
אם הפונקציה מוגדרת כסטטית

אז כן, אפשר לקרוא לה ללא instance של אובייקט.
 
למעלה