Por que declarar um argumento de função final?

Atualmente, estou trabalhando no livro "Ensine-se a desenvolver aplicativos Android em 24 horas", publicado por Sams. Eu sou relativamente novo em Java, Android ou não. Eu tenho uma experiência muito sólida no ActionScript 3, que tem semelhanças suficientes com Java que a linguagem em si não é difícil de entender, mas ainda tenho algumas perguntas sobre a lógica por trás de alguns exemplos de código do livro. Por exemplo, aqui está uma função que acompanha o código de exemplo da Hora 9:

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

Nesta assinatura da função, os autores declararam o argumento scoreTable como final. Estou um pouco confuso sobre o porquê eles fizeram isso. Não me ocorreria tentar atribuir um novo valor ao argumento da função scoreTable (é uma prática recomendada no ActionScript). Além disso, eu realmente não vi ninguém fazer isso em nenhum dos Java do mundo real que examinei ou transportei para o AS3.

Existe algo específico no desenvolvimento do Android que faz com que seja necessário declarar certos argumentos de função como finais?

Por que o objeto TableLayout é declarado final, mas não o XmlResourceParser?

questionAnswers(1)

yourAnswerToTheQuestion