下面是我的部分代码:
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";
^请问应该怎么解决?
谢谢!!
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";
^请问应该怎么解决?
谢谢!!
内部类要访问外边的变量或者对象,就必须是final的。
不过,你的问题也许可以换种方式解决。
就是你把 query 变量不要定义在方法内部,你可以定义它为外部类的变量。
直接String query = "select * from authors"; 不就行,也不知我的理解是不是正确.
其实你可以定义一个类
queryButton.addActionListener(new OnQuery());
....
class OnQuery implements ActionListener {
....
void actionPreformed(ActionEvent e) {
// 把你要实现的代码写在这里
}
}一般内部类里面的代码不能太长,否则别人看了也累啊:)