Como encapsular um array em Java
Estou começando com Java e estou aprendendo sobre setters, getters e encapsulation. Eu tenho um programa muito simples, duas classes:
Container
tem um array int privado (numArray
) com seu setter & getter.
Main
cria umContainer
objeto e usa emtotalArray
método.
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;
}
}
Problema: Eu posso mudar o array int privado através do getter, eu sei que é porquegetNumArray
retorna uma referência paranumArray
, não a matriz em si. Se eu estivesse interessado em um único elemento da matriz, faria um getter com um valor de índice, mas eu quero a matriz inteira para ototalArray
método.
Como posso evitarnumArray
de ser modificado fora de sua classe?