can the method local inner class object access method local variables
/* First of all, your program compiles and works fine because you are using Java 8.
If using Java 7 or lower, it won't even compile. The reason is exactly as you cited.
But I will try to explain it a bit more. Consider the following code: */
public void m1() {
int k = 30;
class inner {
public void m2() {
System.out.println(k);
}
}
inner o = new inner();
k = 42; // <= Note the reassignment here.
o.m2();
}
/*
What should the method call o.m2() print? "30" or "42"? Both outputs could
reasonably be argumented. At the time the method was declared and defined,
the variable k had the value 30. At the time the method was called, the
variable k had the value 42.
To prevent such ambiguities, the compiler does not allow assignment to a
variable that is used in such inner classes (local and anonymous). So it
must be final.
In Java 8 this was relaxed a bit. Java 8 introduced the concept of
effectively final. A variable that is declared and initialized and not
being assigned again is considered effectively final. And the compiler
allows that code without declaring the variable final.
As a matter of fact, you also get a compiler error in Java 8 when trying
to compile the above code.
*/
Are there any code examples left?
New code examples in category Java
-
Java 2022-03-27 21:35:04 Sort string array in case insensitive order and case sensitive order java
-
Java 2022-03-27 21:25:10 java -jar -l resources\es.porperties -i ejemplo.txt -o inject.bin
-
Java 2022-03-27 21:20:21 Debug & Fix a 2-Dimensional Array Java Console Application
-
Java 2022-03-27 20:40:19 TreeSet headSet(E toElement) method in java
-
Java 2022-03-27 19:30:06 close keyboard android
-
Java 2022-03-27 19:20:40 java measure execution time
-
Java 2022-03-27 19:10:06 how to add cardview support in android studio
-
Java 2022-03-27 18:55:08 android studio lower case letters on a button