Может кто-нибудь объяснить, как это работает?

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

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

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

JButton yellowButton = new JButton("Yellow");

Может кто-нибудь объяснить, как это работает?

2 ответа

Решение

Если это действительно работает, то это означает, 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 чтобы получить доступ к полям класса.)

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

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

private JButton yellowButton = null;
Другие вопросы по тегам