public class Curso {
private String[] alumnos = new String[30];
public String[] getAlumnos() {
return alumnos;
}
}
Curso c = new Curso();
c.getAlumnos()[0] = "Intruso";
java.util.Arrays.fill(c.getAlumnos(), null);
Correcto Incorrecto Sin responder Respuesta correcta: El getter devuelve la referencia interna al array; quien la recibe puede modificarlo directamente desde afuera.
¿Por qué? El atributo es private, pero el getter entrega la dirección de memoria del array interno, no una copia. Lo que protege el private es el campo, no el objeto al que apunta: quien recibe esa referencia puede sobrescribir elementos como si el array fuera suyo (y final no lo evitaría: solo impide reasignar la referencia, no modificar su contenido). La solución es devolver una copia defensiva (con un for o Arrays.copyOf) o directamente no exponer el array y ofrecer solo las operaciones que tienen sentido (como inscribir(alumno)).