2013-02-25 3 views
2

Использование java, есть ли способ установить определенные значения в массиве как статические/неизменяемые? Я пытаюсь сделать игру в судоку, поэтому я хочу, чтобы начальные номера были установлены так, чтобы программа не могла их изменить, а остальные числа были изменены. До сих пор я делал некоторые поисковые запросы, но ни один из моих поисков не привел какую-либо соответствующую информацию.Установка значений массива статическим

+0

Это больше подходит для вашего класса. Просто защитите данные с помощью методов доступа. – vikingsteve

+1

Это невозможно с массивами, но вы можете создать свой собственный класс и убедиться, что некоторые поля не могут быть отредактированы. – Ankit

+0

Невозможно отметить любые или все элементы массива как «только для чтения». Лучшее, что вы можете сделать, это «скрыть» массив за вызовом метода. Вы можете использовать 'final' в ссылке на массив, но это просто сделает его (вроде) невозможным для изменения того, на какой массив ссылаются - это не будет препятствовать модификации массива. –

ответ

2

Вы должны скрыть массив, сделав его приватным. И никогда не возвращайте ссылку на массив, а возвращайте клон.

например.

public class ArrayHolder { 
    private String[] array; 

    public ArrayHolder(String[] inputArray) { 
     //make a copy of inputArray 
     //assign the reference to the copy to this.array 
    } 

    public String[] getArray() { 
     //make a copy of the array 
     //return the reference to the copy 
    } 
} 

Насколько сделать некоторые элементы обновляемыми, вы должны написать метод (ы) мутатора в классе, так что только те методы могут изменить некоторые элементы в массиве.

Смежные вопросы