Junior — Middle
What is the necessity of using the 'effectively final' keyword in Java?
sobes.tech AI
Answer from AI
In Java, the term "effectively final" means that a variable is not declared with the final keyword, but its value does not change after initialization.
This is important, for example, when using local variables inside lambda expressions or anonymous classes. Such constructs can only use variables that are either final or effectively final.
Example:
int x = 10; // effectively final if not changed further
Runnable r = () -> System.out.println(x);
If you try to change x after this, the compiler will give an error because the variable will no longer be effectively final.
This restriction helps avoid issues with mutable state in multithreaded environments and ensures safe access to variables from nested constructs.