我有这行代码。
class ButtonPanel extends JPanel implements ActionListener
{
public ButtonPanel()
{
yellowButton = new JButton("Yellow");
并且它有效,我认为在创建像这样的jButton实例之前,Java需要知道yellowButton的类型吗?
JButton yellowButton = new JButton("Yellow");
有人能解释一下这是如何运作的吗?
答案 0 :(得分:9)
如果确实有效,那么这意味着yellowButton
可能是您没有注意到的类字段。
再次检查课程。你可能拥有的更像是这样的东西:
class ButtonPanel extends JPanel implements ActionListener
{
private JButton yellowButton;
public ButtonPanel()
{
yellowButton = new JButton("Yellow");
/* this.yellowButton == yellowButton */
/* etc */
}
}
如果在方法范围中找不到变量foo
,它会自动回退到this.foo
。相比之下,像PHP这样的语言没有这种灵活性。 (对于PHP,您始终必须$this->foo
而不是$foo
才能访问类字段。)
答案 1 :(得分:1)
它不应该工作,您总是需要声明变量的类型。你确定你在某个地方没有丢失一段代码吗?
在开始时就像这样。
private JButton yellowButton = null;