El siguiente código en Java usa una matriz final
de String
y no hay duda al respecto.matriz final en 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] + " ");
}
}
}
Muestra la siguiente salida en la consola.
I can never change
El siguiente código también va sin ninguna duda.
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] + " ");
}
}
}
Obviamente, la línea comentada hace que el error especificado porque estamos tratando de volver a asignar el declarada final
matriz de tipo String
.
¿Qué pasa con el siguiente código.
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] + " ");
}
}
}
y muestra I can always change
significa que podríamos administrar para modificar el valor de la final
matriz de tipo String
. ¿Podemos modificar la matriz completa de esta manera sin violar la regla de final
?
Dijiste _object_, y eso es bueno Esto se aplica a todos los objetos, no sólo matrices Está bien para modificar los objetos que se encuentran.. el valor de las variables finales también. Por ejemplo, 'final List list = new ArrayList (); list.add (" foo ");'. –