valor salida referencia por paso pasar parámetros parametros funciones enviar entero ejemplos datos java android final

salida - pasar entero por referencia java



¿Por qué declarar un argumento de función para ser final? (1)

Actualmente estoy trabajando en el libro "Enseñe a ti mismo el desarrollo de aplicaciones para Android en 24 horas" publicado por Sams. Soy relativamente nuevo en Java, Android o de otro tipo. 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 ejemplo 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 sorprendido de por qué hicieron esto. No se me ocurriría ni siquiera intentar asignar un nuevo valor a la función scoretable table (se considera una mala práctica en ActionScript). Además, no he visto a nadie hacer esto en ninguno de los Java del mundo real que he examinado o portado en AS3.

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

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


Hay dos razones principales por las que puede querer marcar un argumento final . Primero, si planea usar el argumento en una clase interna anónima, entonces debe marcarlo como final para que pueda ser referenciado en esa clase. Este es en realidad un caso de uso bastante común para marcar los argumentos finales.

La otra razón común para marcar los argumentos final es evitar que los sobrescribas accidentalmente. Si realmente no quieres cambiar los argumentos, entonces quizás deberías marcarlos como final para que si lo haces, obtendrás el error en tiempo de compilación en lugar de descubrir en tiempo de ejecución que tu código tiene un error.