Java 8 - Interview Questions and Answers on Effectively Final

Q1.  Difference between final and effectively final ? Why is effectively final even required ?

Ans. Final variable means a variable that has been declared final and hence cannot be changed after initialization.

Effective final means a variable that has not been declared final but haven't been reassigned the value after initialization.

First is the regulation that restricts the reassignment and will raise a compilation error if we try to do so. Second is the outcome without the restriction.

Effective Final is the eventual treatment of the variable that is required for many features. For eq - Java 8 requires that

local variables referenced from a lambda expression must be final or effectively final

It means all local referenced from lambda expressions must be such that their value shouldn't be changed after initialization whether declared final or not.

Q2.  Which keyword specify that a variable is effectively final ?

 a. final
 b. No Keyword
 c. Both of the above
 d. None of the above

Ans. No Keyword