Написал класс синглтон. В нем есть поле:
private ArrayList<Cash> storageList;
И геттер:
public ArrayList getStorageList();
return this.storageList;
Когда я из другого класса вызываю следующий метод:
CashStorage.getCashStorage().getStorageList().set(1, new Cash());
Компилятор это нормально пропускает. Но ведь поле storageList приватное, почему тогда получив ссылку из другого класса я имею возможность на него воздействовать?
Но Вы же геттером на него "воздействуете", а геттер публичный.
Дело в том, что когда вы пишете геттер, вы вправе не давать прямую ссылку на объект, а создать новый и отдать его, например:
public ArrayList<Cash> getStorageList() {
return new ArrayList<>(this.storageList);
}
Ну если ты хочешь, чтобы он не изменялся используй final. И насчет доступа к приватным полям, насколько мне известно, к ним можно получать доступ с помощью рефлексии (без геттеров и сеттеров).
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости