Cómo encapsular una matriz en Java
Estoy empezando con Java y estoy aprendiendo acerca de los setters, getters y encapsulation. Tengo un programa muy simple, dos clases:
Container
tiene una matriz int privada (numArray
) con su setter y getter.
Main
crea unContainer
objeto y lo usa entotalArray
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: Puedo cambiar la matriz int privada a través del getter, sé que es porquegetNumArray
devuelve una referencia anumArray
, no la propia matriz. Si estuviera interesado en un solo elemento de la matriz, haría un captador con un valor de índice, pero quiero toda la matriz para eltotalArray
método.
Como puedo prevenirnumArray
¿De ser modificado fuera de su clase?