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?

Respuestas a la pregunta(8)

Su respuesta a la pregunta