在内部类(java)中访问局部变量 [英] local variable is accessed within inner class (java)

查看:316
本文介绍了在内部类(java)中访问局部变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我编译代码后出现两个错误。

I got two errors after I compiled my code.

错误是:

1。

  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);
    }

}

如何解决此错误?

推荐答案

您需要声明

JTextField input = new JTextField("",10);

JComboBox c_age = new JComboBox(age);

像这样:

final JTextField input = new JTextField("",10);

final JComboBox c_age = new JComboBox(age);

这意味着输入 c_age 无法更改:


使用但未使用
声明的任何局部变量内部类必须是
,必须在内部类的
主体之前分配。

Any local variable, used but not declared in an inner class must be definitely assigned before the body of the inner class.

从Java中解释语言规范,第8.1节。 3个内部类和附件实例

Explanation taken from The Java Language Specification, Section - 8.1.3 Inner Classes and Enclosing Instances

这篇关于在内部类(java)中访问局部变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆