Jak hermetyzować tablicę w Javie
Zaczynam od Java i uczę się o setterach, getterach i enkapsulacji. Mam bardzo prosty program, dwie klasy:
Container
ma prywatną tablicę int (numArray
) z jego seterem i getter.
Main
tworzy aContainer
obiekt i używa gototalArray
metoda.
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;
}
}
Problem: Mogę zmienić prywatną tablicę int przez getter, wiem, że to dlategogetNumArray
zwraca referencję donumArray
, a nie sama tablica. Gdybym był zainteresowany pojedynczym elementem tablicy, zrobiłbym gettera z wartością indeksu, ale chcę, aby cała tablica dlatotalArray
metoda.
Jak mogę zapobiecnumArray
od modyfikacji z jego klasy?