J'ai un étudiant qui étudie pour l'examen OCP Java 7, et il m'a présenté ce problème. Lui-même et je comprends qu'une variable locale ne peut pas être utilisé dans la classe interne de la méthode à moins qu'il est définitif, mais il m'a présenté le code suivant qui fonctionne très bien:Une variable locale ne peut pas être utilisée dans une classe interne. Alors pourquoi ce code fonctionne-t-il?
public class TestC195 {
public static void main(String[] args) {
TestC195 myObject = new TestC195();
myObject.doStuff();
}
private String x = "Outer 2";
void doStuff() {
String z = "local";
class myInner {
public void seeOuter() {
System.out.println("outer: " + x);
System.out.println("outer: " + z);
}
}
myInner in = new myInner();
in.seeOuter();
}
}
La sortie est:
outer: Outer 2
outer: local
Alors qu'est-ce qu'on manque tous les deux?
Il est [membre de la classe] (https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) . – Maroun
Vous compilez probablement avec Java 8, où la règle change légèrement: la variable doit seulement être "effectivement" finale. –