我遇到下一个错误:Cannot refer to a non-final variable inside an inner class defined in a different method.
我不想使用FINAL ArrayList,因为我必须设置修改某些内容。
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");
}
}
});
}
最佳答案
您可以将arrayList设置为“最终”,还可以继续在该arrayList中添加/删除内容。
您唯一不能做的就是将arrayList变量分配给其他对象。
例:
final ArrayList list1 = new ArrayList();
// This is allowed:
list1.add(new Object());
// But this is not:
list1 = some_other_list;