您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Java:封闭范围中定义的局部变量mi必须是final或有效的final

Java:封闭范围中定义的局部变量mi必须是final或有效的final

错误意味着 。

要在内部类中使用变量,必须对其进行声明final。只要mi是循环计数器并且final不能分配变量,就必须创建一种变通方法获取可在内部类内部访问mifinal变量中的值:

final Integer innerMi = new Integer(mi);

因此,您的代码将如下所示:

for (int mi=0; mi<colors.length; mi++){

    String pos = Character.toUpperCase(colors[mi].charAt(0)) + colors[mi].substring(1);
    JMenuItem Jmi =new JMenuItem(pos);
    Jmi.setIcon(new IconA(colors[mi]));

    // workaround:
    final Integer innerMi = new Integer(mi);

    Jmi.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JMenuItem item = (JMenuItem) e.getSource();
                IconA icon = (IconA) item.getIcon();
                // HERE YOU USE THE FINAL innerMi variable and no errors!!!
                Color kolorIkony = getColour(colors[innerMi]); 
                textArea.setForeground(kolorIkony);
            }
        });

        mnForeground.add(Jmi);
    }
}
java 2022/1/1 18:16:39 有558人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶