Comme d'autres l'ont fait remarquer, il est impossible d'avoir des tableaux immuables en Java.
Si vous avez absolument besoin d'une méthode qui renvoie un tableau qui n'influence pas le tableau d'origine, alors vous devrez cloner le tableau à chaque fois :
public int[] getFooArray() {
return fooArray == null ? null : fooArray.clone();
}
Évidemment, cette méthode est plutôt coûteuse (puisque vous créerez une copie complète à chaque fois que vous appellerez le getter), mais si vous ne pouvez pas modifier l'interface (pour utiliser un fichier List
par exemple) et ne peut pas risquer que le client modifie vos internes, alors cela peut être nécessaire.
Cette technique s'appelle faire une copie défensive.