Je pratiquais le concept de la Classe Intérieure et, à l'intérieur, la Méthode Classe Locale Locale.Besoin de la variable finale dans le concept de la classe interne
Je sais l'utilisation du mot-clé finale très bien mais dans ce programme, je ne suis pas en mesure de comprendre sa signification:
//method local inner class example
package practice;
public class OuterClass
{
void my_Method()
{
final int n=23; //why final is required?
class MethodInner_Demo
{
public void print()
{
System.out.println("This is method local inner class: "+n);
}
}
MethodInner_Demo inner=new MethodInner_Demo();
inner.print();
}
public static void main(String[] args)
{
OuterClass outer=new OuterClass();
outer.my_Method();
}
}
Et sans utiliser final, il jette une erreur dans cette partie,
System.out.println("This is method local inner class: "+n);
Exception dans le thread "principal" java.lang.Error: problème de compilation non résolues: ne peut pas se référer à la variable locale non-finale n définie dans une portée englobante
S'il vous plaît expliquer!
Merci.
Vous semblez être en utilisant une ancienne version de Java - il n'est pas nécessaire pour que la variable soit finale en Java 8 (la version actuelle). – assylias
S'il vous plaît jeter un oeil à: - https://stackoverflow.com/questions/3910324/why-java-inner-classes-require-final-outer-instance-variables –
Je viens de vérifier la version, son 1.8.0_131 –