Вы не можете сделать это из removeMessage
, потому что хотите, чтобы это происходило без нажатия кнопки.
Вам следует watch
внести изменения в data.show
. Подробности о том, как это сделать здесь .
Внутри watch
, когда значение установлено в true, вы можете установить тайм-аут и сохранить идентификатор, возвращаемый setTimeout
. Тайм-аут должен установить data.save
в false, это закроет уведомление. Вам также нужно очистить тайм-аут изнутри removeMessage
или изнутри метода watch
, когда значение становится ложным.
Вам нужно очистить тайм-аут, когда уведомление закрыто, чтобы предотвратить следующее поведение:
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
).
Предлагаю прочитать Динамические прокси-классы :
Метод Proxy.getProxyClass возвращает объект java.lang.Class для прокси класс с учетом загрузчика класса и массив интерфейсов. Прокси класс будет определен в указанном классе загрузчик и будет реализовывать все поставляемые интерфейсы. Если прокси класс для той же перестановки интерфейсов уже определен в классе загрузчик, то существующий прокси-класс будет возвращен; в противном случае, прокси класс для этих интерфейсов будет генерируется динамически и определяется в загрузчик классов. [emphasis mine]