我遇到下一个错误: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;

10-07 19:08
查看更多