Я уже не раз встречал, но только вот подумал... А что означает такая конструкция, когда допустим в методе один из параметров имеет модификатор доступа 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;
}
будет ошибка компиляции.
Комментариев нет:
Отправить комментарий