必须
final从内部(和匿名)类访问您的局部变量。
您可以为以下代码更改代码:
for (int i = 1; i < label.length; i++) { final JLabel currentLabel =new JLabel("label " + i); currentLabel.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent me) { currentLabel.setVisible(false); // No more compilation error here } }); label[i] = currentLabel;}
从JLS:
必须声明使用但未在内部类中声明的任何局部变量,形式参数或异常参数
final。内部类中使用但未声明的任何局部变量必须在内部类主体之前明确分配(第16节)。
资源:
- JLS-内部类和封闭实例
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)