Rule of thumb: do not use it.
Final cannot stop you by changing objects, only its reference, and this is because objects in java, as a rule, are not amenable to processing.
Take a look at this code:
class Example{
Now, in the method:
private void (final Example examp){ ....
examp will always be the same object, but inner can change ... And inner is an important object here, one that does everything!
This might be an extreme example, and you might think that inner might be final, but if it's a utillery class, maybe it shouldn't. It is also easy to find a more common example:
public void (final Map map){; ....
So, my point in the Final argument in the arguments is that it does not guarantee that all the code inside the Final class is indestructible, and therefore the word Final can put an end to you and mascarading an error ...
Assuming Final in params, you can show only wishes, not facts, and for this you should use comments, not code. Moreover: it is standard (de facto) in java that all arguments are only input arguments (99% of the code). Thus, the word Final in the parameters is NOISE because it exists and does not mean anything.
And I don't like the noise. Therefore, I try to avoid this.
I use the word Final to mark internal variables that will be used in an anonymous inner class (you can not mark it if they are really final, but cleaner and more readable).
UPDATED
final means "assigned once", which when applied to the arguments of a method means nothing in the program logic or in its design.
You can assign arguments to a new object inside the method and there will be no changes outside it.
The only difference in the final argument will be that you cannot assign these objects to other objects. Assigning arguments is something that can be ugly and something to avoid, but its only style problem, and at this point the style problem should be the assignment itself, and not the activity of the "final" word.
I think the ending is useless in arguments (and so, noise), but if someone can use it, I will be glad to know it. What can I achieve in order to put on a βfinaleβ that cannot be achieved without setting it?