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?

questionAnswers(8)

yourAnswerToTheQuestion