Java y el uso de la palabra clave Final

Soy nuevo en Java habiendo programado en Delphi y C # durante algún tiempo. Mi pregunta se relaciona con el uso de la palabra clave "final" en una variable que contiene una clase instanciada cuando la declaración de variable y la instanciación ocurren dentro del alcance del mismo método. p.ej

private String getDeviceID() {
   //get the android device id
   final TelephonyManager tm =                
     (TelephonyManager)GetBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
   final String deviceID = tm.getDeviceId();

   // log debug message containing device ID
   Log.d(LOG_CAT, "getDeviceID: " + deviceID);        

   return deviceID;
}

okay, así que creo que entiendo el hecho de que las variables "finales" solo pueden asignarse una vez y no pueden cambiarse debido a la palabra clave "final" en cada declaración, pero ambas variables no quedan fuera del alcance cuando sale el método ? y volver a llamar al método simplemente reasignará 2 nuevas variables finales que una vez más quedarán fuera del alcance al salir del método?

Para mí, ¿me parece extraño usar la palabra clave "final" en estas variables? a menos que no entienda cómo impactan en las variables locales dentro del alcance de un método?

Puede alguien aclararme cuál es el impacto de "final" con respecto al alcance del método, o declara estas variables particulares como finales simplemente una tontería que alguien hizo?

Respuestas a la pregunta(16)

Su respuesta a la pregunta