Immagina di avere questa classe:
public class Test
{
private String[] arr = new String[]{"1","2"};
public String[] getArr()
{
return arr;
}
}
Ora, ho un'altra classe che utilizza la classe sopra:
Test test = new Test();
test.getArr()[0] ="some value!"; //!!!
Quindi questo è il problema: ho avuto accesso a un campo privato di una classe dall'esterno! Come posso impedirlo? Voglio dire, come posso rendere questo array immutabile? Questo significa che con ogni metodo getter puoi salire di livello per accedere al campo privato? (Non voglio biblioteche come Guava. Devo solo conoscere il modo giusto per farlo).
final
non impedisce la modifica del campo . Tuttavia, prevenire la modifica diObject
cui fa riferimento un campo è più complicato.