Страницы

Поиск по вопросам

пятница, 5 апреля 2019 г.

Что означает final когда указано как модификатор к параметру?

Я уже не раз встречал, но только вот подумал... А что означает такая конструкция, когда допустим в методе один из параметров имеет модификатор доступа final...
Ведь в любом случае при повторном вызове метода ему можно передать новое значение...


Ответ

Если указан параметр final когда объявляется переменная, то его нельзя будет изменить.
public void i1(final String i1) { i1 = ""; // ошибка компиляции } Также параметр final даёт к себе доступ анонимным классам. Знаю такой пример на Android при запуске Activity
@Override protected void onCreate(final Bundle i1) { super.onCreate(i1); setContentView(R.layout.layout_i1); new AlertDialog.Builder(this) .setTitle(getString(R.string.app_name)) .setPositiveButton("ОК", new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface i2, int i3) { i1.clone(); // вот тут можем его получить Только потому, что у Bundle i1 указан параметр final return; }
}) .setNegativeButton("Выход", new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface i1, int i2) { i1.cancel(); finish(); return; }
}) .create() .show(); }
Ведь если заменить эту строку
protected void onCreate(final Bundle i1) {
на это
protected void onCreate(Bundle i1) {
то вот здесь
@Override public void onClick(DialogInterface i2, int i3) { i1.clone(); <<<--------- в этой строке return; }
будет ошибка компиляции.

Комментариев нет:

Отправить комментарий