0

我在我的应用程序中添加了简单的类:

public class Nomenklatura implements Serializable
    {
        private Boolean SmenaIsOpen=false;
        public Nomenklatura()
        {
            SmenaIsOpen=false;
        }
        public String OpenSmena()
        {
            SmenaIsOpen=true;
            return "ok";
        }
        public String CloseSmena()
        {
            return "ok";
        }
        public Boolean GetSmenaIsOen()
        {
            return SmenaIsOpen;
        }
        public void SetSmenaIsOen(Boolean val)
        {
            SmenaIsOpen=val;
        }

    }

应用程序应该使用此类的一个对象。当我在活动中使用它时:

@Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.presmena);  
        Nomenklatura Asortiment;
         Asortiment=(Nomenklatura) getIntent().getExtras().getSerializable("Nomenklatura");
         Button but1=(Button) findViewById(R.id.button1);
            but1.setOnClickListener(new OnClickListener() 
            {
                @Override
                public void onClick(View arg0) 
                {
                    if(Asortiment.GetSmenaIsOen()) Asortiment.CloseSmena();
                    else Asortiment.OpenSmena();
                }
            });
    }

我收到错误:无法在不同的方法 Presmena.java 中定义的内部类中引用非最终变量 Asortiment。帮助理解,有什么问题

4

2 回答 2

0

您必须将您的 Asortiment 变量声明为 final

final Nomenklatura Asortiment;
于 2013-01-05T12:50:46.040 回答
0

像这样声明

final Nomenklatura Asortiment = ...

它应该可以工作。当您声明内部类并让它们使用您的局部变量时(如果您考虑一下,通常会超出内部范围),它们需要被捕获。在 Java 中,您需要将此类变量标记为final, 以避免意外行为。

于 2013-01-05T12:51:10.453 回答