Как инкапсулировать массив в Java

Я начинаю с Java и изучаю сеттеры, геттеры и инкапсуляцию. У меня очень простая программа, два класса:

Container имеет приватный массив int (numArrayс его сеттером и геттером.

Main создаетContainer объект и использует его вtotalArray метод.

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;
    }
}

Проблема: я могу изменить частный массив int через геттер, я знаю, что это потому, чтоgetNumArray возвращает ссылку наnumArray, а не сам массив. Если бы меня интересовал один элемент массива, я бы сделал геттер со значением индекса, но я хочу, чтобы весь массивtotalArray метод.

Как я могу предотвратитьnumArray быть модифицированным из своего класса?

Ответы на вопрос(8)

Ваш ответ на вопрос