Je commence par Java et j'apprends des setters, des getters et de l'encapsulation. J'ai un programme très simple, deux classes:Comment encapsuler un tableau en Java
Container
a un tableau int privé (numArray
) avec son getter setter &.Main
crée un objetContainer
et l'utilise dans la méthodetotalArray
.
public class Container {
private int numArray[]= {0,0,0};
public int[] getNumArray() {
return numArray;
}
public void setNumArray(int index, int value){
numArray[index] = value;
}
}
public class Main {
public static void main(String[] args) {
Container conte = new Container();
System.out.println(totalArray(conte.getNumArray()));
conte.getNumArray()[2]++;
System.out.println(totalArray(conte.getNumArray()));
}
private static int totalArray (int v[]){
int total=0;
for (int conta =0; conta<v.length;conta++){
total+=v[conta];
}
return total;
}
}
Problème: Je peux changer le tableau int privé à travers le getter, je sais que ce que getNumArray
renvoie une référence à numArray
, pas le tableau lui-même. Si j'étais intéressé par un seul élément du tableau, je ferais un getter avec une valeur d'index, mais je veux tout le tableau pour la méthode totalArray
.
Comment puis-je empêcher numArray
d'être modifié en dehors de sa classe?
'Some' comme dans la bibliothèque Java standard. –
@Pete: oui mais pas seulement. – glmxndr