次の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値をなんとか変更できることを意味します。のルールに違反することなく、この方法で配列全体を変更することはできますか?finalStringfinal