Самый близкий эквивалент деструктору в Java эти , завершают () метод. Большая разница для традиционного деструктора - то, что Вы не можете быть уверены, когда это назовут, так как это - ответственность сборщика "мусора". Я настоятельно рекомендовал бы тщательно читать на этом перед использованием его, так как Ваши типичные шаблоны RAIA для дескрипторов файлов и так далее не будут работать надежно с, завершают ().
Следующая ссылка помогла мне понять.
http://www.javaworld.com/javaworld/javaqa/2002-03/01-qa-0315-happyevent.html
]В 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
}
});
В Java нет поддержки на языке для обработки событий. Но есть классы, которые могут помочь. Вы можете посмотреть класс java.awt.Event
; java.awt.event
и пакеты java.beans
. Первый пакет является основой для обработки событий в библиотеках графического интерфейса пользователя AWT и Swing. Пакет java.beans
содержит вспомогательные материалы для спецификации Java Beans , включая события изменения свойств и события контекста bean-компонента.
Как правило, обработка событий осуществляется в соответствии с шаблонами «Наблюдатель» или «Публикация / подписка» (как указано кгианнакакисом )
В Java нет встроенной поддержки делегатов и событий, таких как C #. Вам нужно будет реализовать шаблон Observer или Publish / Subscribe самостоятельно.