5 Answers
5

It means that within the method, you can't assign new values to the parameters.

A common reason for wanting to do this is to be able to use the parameters within anonymous inner classes which can only reference final local variables, including parameters.

Another reason for doing this is if your coding style favours declaring all local variables as final if possible. (Personally I try to treat them as final, but avoid actually declaring them that way, as it adds cruft.)

What confuses me is this: I think a final can be changed sometimes. IE, you declare a variable as final so that a button listener can use it. At run, activate that button listener. Then change the variable. Then activate that button listener. Does it not have a different value the second time? If so, why? If not... well, I guess it's really truly immutable and once you tell me so, I won't be confused.
–
ArtOfWarfareAug 21 '12 at 18:44

@ArtOfWarfare: If you have declared the variable as final, you can't change it. If you think you can, you should write a separate question which demonstrates that.
–
Jon SkeetAug 21 '12 at 18:48