Обработка повышения события в Java

Самый близкий эквивалент деструктору в Java эти , завершают () метод. Большая разница для традиционного деструктора - то, что Вы не можете быть уверены, когда это назовут, так как это - ответственность сборщика "мусора". Я настоятельно рекомендовал бы тщательно читать на этом перед использованием его, так как Ваши типичные шаблоны RAIA для дескрипторов файлов и так далее не будут работать надежно с, завершают ().

6
задан bdhar 30 July 2009 в 07:30
поделиться

4 ответа

Следующая ссылка помогла мне понять.

http://www.javaworld.com/javaworld/javaqa/2002-03/01-qa-0315-happyevent.html

]
1
ответ дан 8 December 2019 в 04:09
поделиться

В Java нет первоклассных событий. Вся обработка событий выполняется с использованием интерфейсов и шаблона слушателя. Например:

// Roughly analogous to .NET EventArgs
class ClickEvent extends EventObject {
  public ClickEvent(Object source) {
    super(source);
  }
}

// Roughly analogous to .NET delegate
interface ClickListener extends EventListener {
  void clicked(ClickEvent e);
} 

class Button {
  // Two methods and field roughly analogous to .NET event with explicit add and remove accessors
  // Listener list is typically reused between several events

  private EventListenerList listenerList = new EventListenerList();

  void addClickListener(ClickListener l) {
    clickListenerList.add(ClickListener.class, l)
  }

  void removeClickListener(ClickListener l) {
    clickListenerList.remove(ClickListener.class, l)
  }

  // Roughly analogous to .net OnEvent protected virtual method pattern -
  // call this method to raise the event
  protected void fireClicked(ClickEvent e) {
    ClickListener[] ls = listenerList.getListeners(ClickEvent.class);
    for (ClickListener l : ls) {
      l.clicked(e);
    }
  }
}

Клиентский код обычно использует анонимные внутренние классы для регистрации обработчиков:

Button b = new Button();
b.addClickListener(new ClickListener() {
  public void clicked(ClickEvent e) {
    // handle event
  }
});
15
ответ дан 8 December 2019 в 04:09
поделиться

В Java нет поддержки на языке для обработки событий. Но есть классы, которые могут помочь. Вы можете посмотреть класс java.awt.Event ; java.awt.event и пакеты java.beans . Первый пакет является основой для обработки событий в библиотеках графического интерфейса пользователя AWT и Swing. Пакет java.beans содержит вспомогательные материалы для спецификации Java Beans , включая события изменения свойств и события контекста bean-компонента.

Как правило, обработка событий осуществляется в соответствии с шаблонами «Наблюдатель» или «Публикация / подписка» (как указано кгианнакакисом )

0
ответ дан 8 December 2019 в 04:09
поделиться

В Java нет встроенной поддержки делегатов и событий, таких как C #. Вам нужно будет реализовать шаблон Observer или Publish / Subscribe самостоятельно.

3
ответ дан 8 December 2019 в 04:09
поделиться
Другие вопросы по тегам:

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