Estoy comenzando con Java y estoy aprendiendo sobre setters, getters y encapsulación. Tengo un programa muy simple, dos clases:Cómo encapsular una matriz en Java
Container
tiene una matriz int privada (numArray
) con su getter setter &.Main
crea un objetoContainer
y lo utiliza en el métodototalArray
.
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 privado a través del captador, sé que es porque getNumArray
devuelve una referencia a numArray
, no la propia matriz. Si estuviera interesado en un solo elemento de la matriz, obtendría un getter con un valor de índice, pero quiero la matriz completa para el método totalArray
.
¿Cómo puedo evitar que numArray
se modifique fuera de su clase?
'Algo' como en la biblioteca estándar de Java. –
@Pete: sí, pero no solo. – glmxndr