次の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