Показать сообщение отдельно
Старый 19.03.2019, 17:42   #3  
mikki_messer is offline
mikki_messer
Участник
 
91 / 20 (1) +++
Регистрация: 20.04.2010
Адрес: Ростов-на-Дону
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Так и должно быть

Методы pack/unpack именно для этого и предназначены. Это список значений, которые будут кешироваться. Точнее, эти методы выполняют 3 функции

1. Список значений, которые подставляются как значения по умолчанию при повторном запуске класса. Сохраняют значения, которые были использованы при последнем запуске

2. Список значений, используемый при выполнении пакетных заданий

3. Список значений, которые передаются между экземплярами класса на клиенте и на сервере. Если сам класс запускается на сервере, но использует диалог с пользователем, который работает на клиенте

Ну, еще эти же методы можно использовать для вызова класса из-вне. Из других классов. Но этим, как правило, не пользуются для таких задач

Именно потому, что использование этих методов такое неоднозначное и возникает ряд проблем

В данном случае, чтобы подавить выполнение п.1 (кеширование ранее использованных значений) надо в методе main() после инициализации экземпляра класса, но до вызова методов, которые берут значения из args() сделать вызов метода

MyClass.getLast();

"В никуда" сделать этот вызов. Этот метод, во-первых, прочитает данные из кеша, а, во-вторых, поставит признак, что данные уже прочитаны. Если после вызова этого метода Вы переопределите переменные, то повторный вызов этого же метода внутри prompt() уже не возьмет значение из кеша

PS: Метод initParmDefault() вызывается только в том случае, если метод unpack() вернет false. Т.е. если нет данных в кеше. При первом вызове
Большое спасибо, сработало!