Может кто-нибудь объяснить, как это работает?
У меня есть эта строка кода.
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;