Иногда приятно быть явным (для удобочитаемости), что переменная не изменяется. Вот простой пример, когда использование final может сэкономить некоторые возможные головные боли
public void setTest(String test) {
test = test;
}
, если вы забыли это ключевое слово на сеттере, переменная, которую вы хотите установить, не будет установлена. Однако, если вы использовали ключевое слово final для параметра, тогда ошибка будет обнаружена во время компиляции.