Представь, что у меня есть этот класс:
public class Test
{
private String[] arr = new String[]{"1","2"};
public String[] getArr()
{
return arr;
}
}
Теперь у меня есть другой класс, который использует вышеупомянутый класс:
Test test = new Test();
test.getArr()[0] ="some value!"; //!!!
Вот в чем проблема: я получил доступ к закрытому полю класса извне! Как я могу предотвратить это? Я имею в виду, как я могу сделать этот массив неизменным? Означает ли это, что с каждым методом получения вы можете получить доступ к приватному полю? (Я не хочу никаких библиотек, таких как гуава. Мне просто нужно знать правильный способ сделать это).
final
действительно предотвратить модификацию поля . Однако предотвращение модификацииObject
упомянутого поля является более сложным.