Это объясняет, как это сделать, когда вы знаете имена элементов во время компиляции, но что, если я хочу, чтобы они определялись во время выполнения... т.е. сегодня, завтра, (день и дата после завтрашнего дня) и т.д.
Переменная элементов должна быть объявлена окончательной.
Нет, нет.
Не означает ли окончательное значение, что я не могу изменить значение?
Для этого конкретного примера он объявлен final
потому что он показан как локальная переменная, и это значение также необходимо для внутреннего класса анонимного DialogInterface.OnClickListener
.
Однако:
Просто потому, что что-то объявлено final
это не значит, что оно должно быть буквальным. Например, final
ключевое слово используется иногда в параметрах для методов, и они явно не статически создаются. Цитируя Википедию: "Конечная переменная может быть инициализирована только один раз, либо через инициализатор, либо оператор присваивания".
Есть и другие места, в которые вы можете поместить свой массив, кроме локальной переменной, для которой не требуется ключевое слово final
, если вы не хотите использовать final
. Один вероятный кандидат будет членом данных вашей деятельности.