Зачем объявлять аргумент функции окончательным?

В настоящее время я работаю над книгой «Teach Yourself Android Application Development за 24 часа», опубликованной Sams. Я относительно не знаком с Java, Android или другим. У меня очень хороший фон в ActionScript 3, который имеет достаточно сходство с Java, что сам язык не трудно понять, но у меня все еще есть некоторые вопросы об обосновании некоторых примеров кода в книге. Например, вот функция, которая поставляется с образцом кода для Часа 9:

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

В этой сигнатуре функции авторы объявили аргумент scoreTable окончательным. Я немного озадачен, почему они это сделали. Мне не пришлось бы даже пытаться назначить новое значение аргументу функции scoreTable (это считается плохой практикой в ​​ActionScript). Кроме того, я на самом деле не видел, чтобы кто-либо делал это в любой реальной Java-среде, которую я изучил или портировал в AS3.

Есть ли что-то особенное в разработке Android, что делает необходимым иногда объявлять определенные аргументы функции как final?

Почему объект TableLayout объявлен окончательным, но не XmlResourceParser?

Есть две основные причины, по которым вы можете отметить окончание аргумента. Во-первых, если вы планируете использовать аргумент в анонимном внутреннем classе, вы должны пометить его final чтобы на него можно было ссылаться в этом classе. На самом деле это довольно распространенный вариант использования аргументов final.

Другой распространенной причиной final вывода аргументов является предотrotation их случайной перезаписи. Если вы действительно не хотите изменять аргументы, возможно, вы должны пометить их final чтобы, если вы действительно это делаете, вы получите ошибку во время компиляции, а не узнаете во время выполнения, что ваш код имеет ошибку.

  • как использовать okhttp для загрузки файла?
  • Как работает BreakIterator в Android?
  • Использование цвета и color.darker в Android?
  • Ошибка Android «gps требует ACCESS_FINE_LOCATION», хотя мой файл манифеста содержит это
  • Разбор строки по дате формата в java defaults датируется 1 и месяц до января
  • Java SE 6 против JRE 1.6 против JDK 1.6 - Что это значит?
  • Расширение от двух classов
  • Добавить строки из-за использования общей ошибки 'extends' вызывает ошибку компилятора
  • как разобрать JSONArray в android
  • не реализуя все методы интерфейса. Является ли это возможным?
  • Можно ли использовать Java 8 для разработки Android?
  • Давайте будем гением компьютера.