如何避免使用FINAL?(java)

  • 本文关键字:java FINAL 何避免 java
  • 更新时间 :
  • 英文 :


我得到了下一个错误: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
}

最新更新