listProcut是一个列表框,定义在一个类的public void dialog()方法中,现在我想实现在列表框中选择一个条目,就能得到所选择的条目的字符串,我把事件写在了内部类中: 
int[] index=new int[vectorProdcut.size()]; 
listProduct.addListSelectionListener(new ListSelectionListener() 
{public void valueChanged(ListSelectionEvent e) 

index = listProduct.getSelectedIndices(); 
System.out.println(index[index.lenth-1]); 

}); 
但总是报:local variable index is accessed from within inner class:needs to be declared final 
难道内部类不能访问外面的非静态变量,请高手指点一下,好郁闷 

解决方案 »

  1.   

    老兄,new ListSelectionListener() ,这个是一个匿名的内部类,如何访问方法中的非静态变量和非常量?
      

  2.   

    内部类不能访问外部类的非成员变量和非final变量,再内部类中其他类型的外部变量是不可见的。
    你可以把index定义为外部类的成员变量,或者加上final关键字就OK了
      

  3.   

    内部静态类只能访问外嵌类的静态成员匿名类没有名字,所以只能管好自己内部成员类实际上有两个 this 指针,所以可以访问外嵌类的非静态成员
      

  4.   

    把int[] index变量改为类全局变量。