我得到了下一个错误:Cannot refer to a non-final variable inside an inner class defined in a different method.
我不想使用FINAL数组列表,因为我必须设置修改一些东西。
for (int i = 0; i < verOrd.size()-1; i++)
{
final int p = i;
instruccion = new JLabel("Instrucción de Orden "+verOrd.get(i).getNumOrden());
statusIns.add(no);
statusIns.add(ok);
ventana.add(instruccion);
ventana.add(no);
ventana.add(ok);
ventana.add(sig2);
int a = 0;
sig2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0) {
if (ok.isSelected())
{
verOrd.get(p).setStatus("Finalizada");
}
}
});
}
for (int i = 0; i < verOrd.size()-1; i++)
{
final int p = i;
instruccion = new JLabel("Instrucción de Orden "+verOrd.get(i).getNumOrden());
statusIns.add(no);
statusIns.add(ok);
ventana.add(instruccion);
ventana.add(no);
ventana.add(ok);
ventana.add(sig2);
int a = 0;
sig2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0) {
if (ok.isSelected())
{
verOrd.get(p).setStatus("Finalizada");
}
}
});
}
你可以把数组列表设为"final",并继续在数组列表中添加/删除内容。
你唯一不能做的就是把数组列表的变量赋值给其他变量
的例子:
final ArrayList list1 = new ArrayList();
// This is allowed:
list1.add(new Object());
// But this is not:
list1 = some_other_list;
您可以尝试封装变量(通过定义getter和setter)。这是OOP方法
可以将数组列表创建为类中的变量,例如
Class Foo{
private ArrayList<type> list;
public Foo(){
list = new ArrayList<>();
}
//Now you can use the list in your methods without making it final
}