59 votes

Pourquoi les classes internes Java nécessitent des variables d'instance externes « finales » ?

final JTextField jtfContent = new JTextField();
btnOK.addActionListener(new java.awt.event.ActionListener(){
    public void actionPerformed(java.awt.event.ActionEvent event){
        jtfContent.setText("I am OK");
    }
} );

Si j'omets final , je vois l'erreur " Impossible de faire référence à une variable non finale jtfContent à l'intérieur d'une classe interne définie dans une méthode différente ".

Pourquoi une classe interne anonyme doit-elle exiger que la variable d'instance des classes externes soit finale pour y accéder ?

6voto

anstarovoyt Points 5745

Étant donné que le modificateur final Java 8 est facultatif pour les variables d'instance externes. La valeur doit être « effectivement définitive ». Voir la réponse Différence entre final et effectivement final .

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