Как Динамический Прокси Java на самом деле работает?

Вы не можете сделать это из removeMessage, потому что хотите, чтобы это происходило без нажатия кнопки.

Вам следует watch внести изменения в data.show. Подробности о том, как это сделать здесь .

Внутри watch, когда значение установлено в true, вы можете установить тайм-аут и сохранить идентификатор, возвращаемый setTimeout. Тайм-аут должен установить data.save в false, это закроет уведомление. Вам также нужно очистить тайм-аут изнутри removeMessage или изнутри метода watch, когда значение становится ложным.

Вам нужно очистить тайм-аут, когда уведомление закрыто, чтобы предотвратить следующее поведение:

  • уведомление открыто
  • пользователь нажимает кнопку закрытия
  • [1111 ] открывается другое уведомление, в течение тайм-аута закрытия
  • тайм-аут срабатывает, и второе уведомление закрывается преждевременно

10
задан David G 18 June 2009 в 18:10
поделиться

2 ответа

At least for Sun's implementation, if you look at the source code of java.lang.reflect.Proxy you'll see that yes, it generates the byte code on-the-fly (using the class sun.misc.ProxyGenerator).

12
ответ дан 3 December 2019 в 20:43
поделиться

Предлагаю прочитать Динамические прокси-классы :

Метод Proxy.getProxyClass возвращает объект java.lang.Class для прокси класс с учетом загрузчика класса и массив интерфейсов. Прокси класс будет определен в указанном классе загрузчик и будет реализовывать все поставляемые интерфейсы. Если прокси класс для той же перестановки интерфейсов уже определен в классе загрузчик, то существующий прокси-класс будет возвращен; в противном случае, прокси класс для этих интерфейсов будет генерируется динамически и определяется в загрузчик классов. [emphasis mine]

5
ответ дан 3 December 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: