This week's book giveaway is in the OCMJEA forum. We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line! See this thread for details.
When using local variables in an anonymous inner class, you are required to make them final. This is to do with the invisible accessor methods that get generated to implement the anonymous inner class.
In other cases, declaring local variables as final could sometimes have advantages like: -
Allows compiler to detect unintentional modification of a variable that is supposed to be constant
May allow Java compiler or Just In Time compiler to optimise code, knowing that the variable value will not change. This might give a small performance gain in a few circumstances.
May help maintenance of the program, by making it clear to the maintainer that the variable should not change
Unlike in C++, where "const" is used a lot, such uses of "final" are not common in Java.
Betty Rubble? Well, I would go with Betty... but I'd be thinking of Wilma.
Other than the obvious, that the values can't be changed, I'm guessing that there is a minor performance benefit, as the JVM can set the final variables off to the side, confident that the values will never change. I believe that is the case for class/instance level final variables, and for final methods as well.