4 votes

Quelqu'un peut-il expliquer comment cela fonctionne ?

J'ai cette ligne de code.

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

et cela fonctionne, je pensais que Java devait connaître le type de yellowButton avant de créer une instance d'un jButton comme celui-ci ?

JButton yellowButton = new JButton("Yellow");

Quelqu'un peut-il expliquer comment cela fonctionne ?

9voto

Darien Points 2025

Si ça marche vraiment, alors ça veut dire yellowButton est probablement un champ de classe que vous n'avez pas remarqué.

Vérifiez à nouveau la classe. Ce que vous avez probablement est quelque chose comme ceci :

class ButtonPanel extends JPanel implements ActionListener
{  
    private JButton yellowButton;

    public ButtonPanel()
    {  
        yellowButton = new JButton("Yellow");
        /* this.yellowButton == yellowButton */

        /* etc */
    }
}

Si une variable foo ne peut être trouvé dans la portée d'une méthode, il se rabat automatiquement sur this.foo . En revanche, certains langages comme PHP ne disposent pas de cette flexibilité. (En PHP, vous devez toujours faire $this->foo au lieu de $foo pour accéder aux champs de la classe).

1voto

RMT Points 3687

Cela ne devrait pas fonctionner, vous devez toujours déclarer le type de votre variable. Etes-vous sûr de ne pas manquer un bout de code quelque part ?

Comme ça, au début.

private JButton yellowButton = null;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X