ג'אווה
סתם קטע מעצבן (ונחמד) שקרה לי היום בג'אווה במהלך כתיבת אחת המטלות. אשמח לשמוע מה דעתכם. כתבתי את קטע הקוד הבא: (אני מקווה שהוא ברור גם בלי ההקשר)
וזה גרם להודעת שגיאה:
אחרי שנייה מחשבה הוספתי hack קטן בשביל לתקן את הבעיה. את i הפכתי לגלובלי ויצרתי פונקצית גישה getIndex שמחזירה את ערכו. בתוך כל אחת מהמחלקות האנונימיות פשוט יצרתי משתנה final שיאותחל לערך שמוחזר על ידי getIndex. כמה חבל שאין בג'אווה ג'נריות (או אפילו דיסקרימיננטות). אהד.
סתם קטע מעצבן (ונחמד) שקרה לי היום בג'אווה במהלך כתיבת אחת המטלות. אשמח לשמוע מה דעתכם. כתבתי את קטע הקוד הבא: (אני מקווה שהוא ברור גם בלי ההקשר)
private ActionListener Handlers []; private void initHandlers () { Handlers = new ActionListener [SHAPE_AMOUNT]; for (int i ShapeIndex.FIRST_NON_FILLABLE - ShapeIndex.FIRST; i <ShapeIndex.LAST_NON_FILLABLE - ShapeIndex.FIRST; i++) Handlers new ActionListener () { public void actionPerformed (ActionEvent e) { items.setSelected (true); buttons.setSelected (true); filledItem.setEnabled (false); filledBox.setEnabled (false); filledItem.setSelected (false); filledBox.setSelected (false); } }; for (int i ShapeIndex.FIRST_FILLABLE - ShapeIndex.FIRST; i <ShapeIndex.LAST_FILLABLE - ShapeIndex.FIRST; i++) Handlers new ActionListener () { public void actionPerformed (ActionEvent e) { items.setSelected (true); buttons.setSelected (true); filledItem.setEnabled (true); filledBox.setEnabled (true); } }; }
וזה גרם להודעת שגיאה:
PainterView.java:196: local variable i is accessed from within inner class; needs to be declared final items.setSelected (true); ^ PainterView.java:210: local variable i is accessed from within inner class; needs to be declared final items.setSelected (true); ^ 2 errors
אחרי שנייה מחשבה הוספתי hack קטן בשביל לתקן את הבעיה. את i הפכתי לגלובלי ויצרתי פונקצית גישה getIndex שמחזירה את ערכו. בתוך כל אחת מהמחלקות האנונימיות פשוט יצרתי משתנה final שיאותחל לערך שמוחזר על ידי getIndex. כמה חבל שאין בג'אווה ג'נריות (או אפילו דיסקרימיננטות). אהד.