Следующий код в Java использует массив final
String
, и в этом нет сомнений.
final public class Main {
public static final String[] CONSTANT_ARRAY = {"I", "can", "never", "change"};
public static void main(String[] args) {
for (int x = 0; x < CONSTANT_ARRAY.length; x++) {
System.out.print(CONSTANT_ARRAY[x] + " ");
}
}
}
Он отображает следующий вывод на консоли.
I can never change
Следующий код также не вызывает вопросов.
final public class Main {
public static final String[] CONSTANT_ARRAY = {"I", "can", "never", "change"};
public static void main(String[] args) {
//CONSTANT_ARRAY={"I", "can", "never", "change"}; //Error - can not assign to final variable CONSTANT_ARRAY.
for (int x = 0; x < CONSTANT_ARRAY.length; x++) {
System.out.print(CONSTANT_ARRAY[x] + " ");
}
}
}
Очевидно, что прокомментированная строка вызывает указанную ошибку, потому что мы пытаемся переназначить объявленный массив final
типа String
.
Как насчет следующего кода.
final public class Main {
public static final String[] CONSTANT_ARRAY = {"I", "can", "never", "change"};
public static void main(String[] args) {
CONSTANT_ARRAY[2] = "always"; //Compiles fine.
for (int x = 0; x < CONSTANT_ARRAY.length; x++) {
System.out.print(CONSTANT_ARRAY[x] + " ");
}
}
}
и отображает I can always change
означает, что нам удалось изменить значение массива final
типа String
. Можем ли мы когда-либо изменить весь массив таким образом, не нарушая правило final
?