¿Por qué declarar un argumento de función como final?

Actualmente estoy trabajando en el libro "Teach Yourself Android Application Development in 24 Hours" publicado por Sams. Soy relativamente nuevo en Java, Android o de otra manera. Tengo un fondo muy sólido en ActionScript 3, que tiene suficientes similitudes con Java que el lenguaje en sí no es difícil de entender, pero todavía tengo algunas preguntas sobre la razón detrás de algunos de los ejemplos de código en el libro. Por ejemplo, aquí hay una función que viene con el código de muestra para la hora 9:

private void processScores(final TableLayout scoreTable, 
      XmlResourceParser scores) throws IOException, XmlPullParserException{

En esta firma de función, los autores han declarado el argumento scoreTable como final. Estoy un poco desconcertado de por qué hicieron esto. No se me ocurriría siquiera intentar asignar un nuevo valor al argumento scoreTable de la función (se considera una mala práctica en ActionScript). Además, en realidad no he visto a nadie hacer esto en ninguno de los Java del mundo real que he examinado o portado a AS3.

¿Hay algo específico sobre el desarrollo de Android que hace que a veces sea necesario declarar ciertos argumentos de función como finales?

¿Por qué el objeto TableLayout se declara final, pero no el XmlResourceParser?

Respuestas a la pregunta(1)

Su respuesta a la pregunta