The simple answer is that there is no difference between finaland “effectively final” variables, in addition to the keyword finalin their declaration, the only goal is to exclude the keyword final.
But this can have a greater impact than you know.
For a lambda expression, the full declaration of the parameter (s) can be simplified, as in x -> x+1. Now consider the nested lambda expressions, such as: x -> y -> x+yand the visual clutter that will be created if we use to add an declaration finalto the parameter xhere.
Java final , , final x -> y -> x+y (final double x) -> y -> x+y.
, Java- ( ). , - , ( ), , final, , , API- , , - .