下面是我的部分代码:
JButton queryButton=new JButton("查询");
String query = new String();
queryButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
               try {  
                  if (scrollPane != null)
                     getContentPane().remove(scrollPane);
                  String auid=text.getText();;
                  if (rs != null) rs.close();
if((auid.trim()).length()==0) query = "select * from authors"; 
-----------------------------------------------------------------------------------
产生的错误如下:
D:\java\123>javac ResultSetTable.java
ResultSetTable.java:47: local variable query is accessed from within inner class; 
                        needs to be declared final
                        if((auid.trim()).length()==0)  query = "select * from authors";
                                                                ^请问应该怎么解决?
谢谢!!

解决方案 »

  1.   

    你这个问题是峨嵋有办法解决的
    内部类要访问外边的变量或者对象,就必须是final的。
      

  2.   

    在内部类中如果要访问局部变量(在方法内部定义的变量),该变量必须是final的。
    不过,你的问题也许可以换种方式解决。
    就是你把 query 变量不要定义在方法内部,你可以定义它为外部类的变量。
      

  3.   

    你把String query = new String();定义在类外试试?
      

  4.   

    为什么要String query = new String();
    直接String query = "select * from authors"; 不就行,也不知我的理解是不是正确.
      

  5.   

    个人感觉代码写的比较乱,不好理解。
    其实你可以定义一个类
    queryButton.addActionListener(new OnQuery());
    ....
    class OnQuery implements ActionListener {
     ....
     void actionPreformed(ActionEvent e) {
       // 把你要实现的代码写在这里
     }
    }一般内部类里面的代码不能太长,否则别人看了也累啊:)