NullPointerExeption in java

  • פותח הנושא kawa
  • פורסם בתאריך

kawa

New member
NullPointerExeption in java ../images/Emo46.gif

הי,
אז ככה, אני עובדת עכשיו על פרוייקט משחקי לוח בג´אווה ( editplus לקמפול jdk1.3 לעבודה ). אקיצר- האבא- Board - הבן InaRow - שזה משחק חמש בשורה . אקיצר- באב אני מאתחלת את המסגרת , הפאנלים והכפתורים - מסוג GameButtons שיורשים את Button . הכפתורים הללו כאמור מאותחלים בקונסטרקטור של האב. עכשיו בבן אני מוסיפה לאותם כפתורים ActionListener.
gameButtons[a].addActuionListener(someActionListener);​
אקיצר- אני מקבלת הודעת שגיאה
NullPointerExeption​
שפירושה שעשיתי פעולה על אובייקט לא מאותחל. אבל לא זו בלבד שאתחלתי את gameButton ב´אב´ אלא גם הפעלתי עליו מתודה באב ( צבע את הרקע בכחול ) - מה שמוכיח בעליל שהוא מאותחל ( כי לולא היה מאותחל לא ניתן היה להפעיל עליו שיטה ) מצד אחד- אם הפעלת מתודה על ה gameButton באב הצליחה- זה אומר שאינו Null . מצד שני בבן איני יכולה להפעיל עליו מתודה כאשר ה´תירוץ´ שה jvm נותן לי זה NullPointerExeption. - קרי האובייקט ( שבאב הוכיח את עצמו כמאותחל) לא מאותחל- זה כאילו ה´אתחול´ לא עובר בירושה. מוזר מאד
 
תיקון קטן...

gameButtons[a].addActuionListener(someActionListener); gameButtons[a].addActionListener(someActionListener);​
שימי לב ל-Action ו-Actuin..
אולי זו טעות הקלדה אם כתבת את השורה בפורום, אבל אם העתקת את השורה ישירות מהקוד אז אולי זה יפתור את הבעייה.. מקווה שעזרתי
 

kawa

New member
תודה אבל... ../images/Emo4.gif

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

voguemaster

New member
שאלה

אתחלת רק את אובייקט המערך או שגם כל reference שיש במערך ? את יכולה להעלות קטע קוד קצר ? ד"א, איך יצרת את ה-ActionListener ? אולי יש סיכוי שהוא לא נוצר ? רק לידע כללי, JBuilder לדוגמא יוצר ActionListener לכל כפתור בנפרד. לא לגמרי ברור לי למה לעשות דבר כזה כשאפשר להשתמש באותו האובייקט, ובתוך היישום שלו לבדוק איזה כפתור נלחץ. חוסך הרבה מתודות שסתם יושבות להן בקובץ ה-JAVA ומשגעות את השכל. אני מניח כמובן שיש לבן אפשרות לגשת לכפתורים של האב, ולא מוגדרים אצלו referenceים משל עצמו (ואז הבן לא ייגש אל הכפתורים של האב אלא לאלו של עצמו). בקשר להערה האחרונה, שכאילו אתחול לא עובר בירושה. נדמה לי שהוא כן. אפשר למצוא לכך הרבה דוגמאות. לדעתי, לא זה מה שעושה פה את הבעיה.. מה דעתך להעלות קטע קוד קצר ?? אלי
 

kawa

New member
הי אלי ../images/Emo13.gif

אז ככה- ברור שאיתחלתי כל אובייקט רפרנס בכל המערך - בלולאה שמאתחלת את כולם. לגבי ה ActionListener - לא בזה העניין ואאמר לך למה. כי הערת NullPointerExe[ption מדברת לא על המתודה שאינה ´טובה´ אלא על האובייקט עצמו שעליו מופעלת המתודה. כדי לוודע שלא במתודה הבעייה הפעלתי מתודה אחרת- וגם היא לא פעלה. *הבעייה באובייקט אשר מאותחל באב ומסיבה מוזרה כל שהיא לא מאותחל בבן * אני באמת אעלה קטע קוד קצר אחרי העונש ששמו ליל הסדר.... אני הולכת למלא את חובתי המשפחתית הפולנית עכשיו כעקרון אני עושה מעשה כעת שלא נועד לעצלנים ( כמותי ) וכותבת תוכנית קצרה שכל תכליתה היא לבדוק האם ´אתחול´ אצל האב עובר בירושה לבן.... ומסתבר מהתוכנית-רק-לצורך-הדגמה הזאת שכן, אתחול עובר בירושה
מה שאומר שאולי בקוד שלי יש כמה סבכים שצריך להתיר... בכל מקרה חג שמח לך
kawa
 
למעלה