JAVA Variable final ??? - Java - Programmation
Marsh Posté le 03-01-2018 à 14:17:41
Je bite rien au java mais je dirais qu'il n'aime pas que passes à ton délégué une variable locale de la méthode qui déclare le délégué, ce qui passerait uniquement si cette variable était une constante. Ce qui parait tout à fait logique.
C'est pas plutôt un truc genre L1C2.setFill(Color.RED); que tu devrais appeler au lieu de triturer cette malheureuse variable innocente ? Ou une variable privée de la classe ? (même si je suis sûr que tu peux faire sans variable !)
Marsh Posté le 03-01-2018 à 15:31:53
TotalRecall a raison, et non c'est pas forcément logique si tu viens d'un langage avec des vraies closures.
Tu peux en effet sortir ta variable d'état et en faire un membre te ta classe Main, car du coup ton listener va y accéder indirectement, à travers la référence vers la classe externe (qui est finale).
Ou plus simplement:
Code :
|
Ça marche chez moi.
Marsh Posté le 03-01-2018 à 15:41:37
On peut débattre de la capture de variables locales par les closures selon le langage mais là à mon avis on a affaire à un débutant donc le souci ne vient pas de là .
J'avais la flemme de vérifier si getFill se disait effectivement getFill mais je ferais aussi un truc comme le tiens, c'est ce à quoi je pensais en disant que la variable n'est pas indispensable.
Après l'utilisation d'une variable distincte c'est bien aussi (pas pour un cas aussi simple où on veut juste switcher la couleur, mais parfois, quand tu dois gérer des états logiques plus complexes). L'important est que Erwan comprenne ce que ça fait.
Marsh Posté le 03-01-2018 à 18:02:53
Merci à vous deux, en effet je développe beaucoup en Python et le premier langage que j'ai abordé était le VB avec des variables globales donc le soucis n'est pas (merci TotalRecall) de savoir si je connais getFill mais de savoir comment se passent les variables en Java
Marsh Posté le 03-01-2018 à 14:11:18
On a tous débuté...
Je veux faire "clignoter" mon rectangle"
Dans ma class je voudrais déclarer une variable string égale à la couleur.
Si la variable == WHITE on change la couleur en RED et vice versa....
Le compilateur me dit ça:
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: Uncompilable source code - local variables referenced from an inner class must be final or effectively final
at javaapplication1.Main$1.handle
Evidemment si je lui demande de mettre en final la variable, il ne veut pas fonctionner non plus..
---------------
http://www.ypikay.com