Может кто-нибудь объяснить, как это работает? - PullRequest
4 голосов
/ 10 июня 2011

У меня есть эта строка кода.

class ButtonPanel extends JPanel implements ActionListener
{  
    public ButtonPanel()
    {  
        yellowButton = new JButton("Yellow");

, и она работает, я думал, что Java должна знать тип yellowButton перед созданием экземпляра jButton, как этот?1006 * Может кто-нибудь объяснить, как это работает?

Ответы [ 2 ]

9 голосов
/ 10 июня 2011

Если это действительно работает, то это означает, что 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 голос
/ 10 июня 2011

Это не должно работать, вам всегда нужно объявлять тип вашей переменной.Вы уверены, что не пропустили где-нибудь кусок кода?

Как это в начале.

private JButton yellowButton = null;
...