Der folgende Code in Java verwendet final
Array von String
und es gibt keine Frage.letzte Array in Java
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] + " ");
}
}
}
Es zeigt die folgende Ausgabe auf der Konsole an.
I can never change
Der folgende Code ohne Frage geht auch.
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] + " ");
}
}
}
Offensichtlich ist die Kommentarzeile bewirkt, dass der angegebene Fehler, weil wir versuchen, die erklärt final
Array vom Typ String
neu zuzuweisen.
Was ist mit dem folgenden Code.
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] + " ");
}
}
}
und es zeigt I can always change
bedeutet, dass wir String
den Wert des final
Array vom Typ ändern verwalten zu können. Können wir das gesamte Array auf diese Weise ändern, ohne gegen die Regel final
zu verstoßen?
Sie sagte _object_, und das ist gut dies für alle Objekte gilt, nicht nur Arrays Es ist in Ordnung Objekte zu ändern, sind.. auch der Wert der finalen Variablen, zB final Liste list = new ArrayList (); list.add ("foo"); '. –