編譯我的代碼後,我得到了兩個錯誤。局部變量訪問內部類(java)
的錯誤是:
local variable input is accessed within inner class;
needs to be declared final
String name = input.getText();
2.
local variable c_age is accessed within inner class;
needs to be declared final
Object child_age = c_age.getSelectedItem();
這是我的代碼:
import javax.swing.*;
import java.awt.event.*;
public class GUI
{
public static void main(String[] args)
{
JFrame frame = new JFrame("Try GUI");
JLabel l1 = new JLabel("Please Enter Your Child's Name");
JTextField input = new JTextField("",10);
JLabel l2 = new JLabel("Choose Your Child's Age");
String[] age = {"Age","1","2","3","4","5","6"};
JComboBox c_age = new JComboBox(age);
JButton button = new JButton("Search");
JTextArea result = new JTextArea();
JScrollPane extend_area = new JScrollPane(result);
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
String name = input.getText();
Object child_age = c_age.getSelectedItem();
}
});
JPanel panel = new JPanel();
panel.add(l1);
panel.add(input);
panel.add(l2);
panel.add(c_age);
panel.add(button);
panel.add(extend_area);
frame.add(panel);
frame.setSize(350,350);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
我該如何解決這個錯誤?
問題解決了,但我不明白你的解釋。你可以給更多的...非常感謝Edward – Roubie 2011-04-13 04:32:01
附加了一個摘錄和鏈接到Java語言規範,我希望這有助於... – edwardsmatt 2011-04-13 04:34:40
final是需要的,以便用戶內部類/閉包使用它時,不能更改該變量。想一想:如果它沒有標記爲final,那麼內部類引用可以完成聲明旁邊的所有代碼,因此必須將其標記爲final以避免併發性問題,並且語法會強制執行此操作。 – 2011-04-13 05:05:45