Comme d'autres l'ont dit, vous pouvez retourner une copie du tableau:
public int[]getMyArray(){
return myPrivateArray.clone();
}
Vous pouvez fournir un getter pour accéder aux éléments individuels du tableau:
public int getMyArray(int index){
return myPrivateArray.get(index);
}
Enfin, si vous souhaitez éviter la copie, mais insistez pour renvoyer tous les éléments à la fois, vous pouvez renvoyer une vue de liste non modifiable de votre matrice:
public class MyClass{
private Object[]myPrivateArray;
private List<Object>myArrayView=Collections.unmodifiableList(Arrays.asList(myPrivateArray));
public List<Object>getMyArrayView(){
return myArrayView;
}
}
Bien que ce soit un peu plus compliqué avec un tableau de primitives:
public class MyClass{
private int[]myPrivateArray;
private List<Integer>myArrayView=new AbstractList<Integer>(){
@Override public int size(){
return myPrivateArray.length;
}
@Override public Integer get(int index){
return myPrivateArray[index]
}
}
public List<Integer>getMyArrayView(){
return myArrayView;
}
}
si vous ne voulez pas modifier le contenu de la copie de retour à l'extérieur de votre objet tableau privé. utiliser le clonage profond ou le clonage superficiel en conséquence. – Vishrant
"Si je ... ai un getter qui renvoie le tableau" - * pourquoi avez-vous cela *? Vous n'avez pas besoin d'un getter pour tout. – user2357112
Copies défensives? De la même manière que tout état modifiable - si vous ne voulez pas l'exposer, vous devez retourner des copies ou des objets immuables. –