Показать сообщение отдельно
Старый 19.03.2019, 17:13   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,651 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Так и должно быть

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

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

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

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

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

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

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

MyClass.getLast();

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

PS: Метод initParmDefault() вызывается только в том случае, если метод unpack() вернет false. Т.е. если нет данных в кеше. При первом вызове
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
За это сообщение автора поблагодарили: NetBus (3), mikki_messer (1), YoungPadawan (1).