/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
// template pro udalosti
class EventTemplate<T extends EventListener> {
protected List
<EventListener
> listeners
= new ArrayList();
public void addListener(T listener) {
listeners.add(listener);
}
public void removeListener(T listener) {
listeners.remove(listener);
}
}
// deklarace udalosti pro tridu Numbers
void numberChanged(int num);
}
// trida Numbers, kde pouzivam udalost/i
class Numbers
{
public final NumberHandler event = new NumberHandler();
private int num = 0;
public void setNumber(int num) {
this.num = num;
event.fireNumberChanged(num);
}
// vnitřní třída handleru pro udalosti
public class NumberHandler extends EventTemplate<NumberListener> {
private void fireNumberChanged(int num) {
for (NumberListener listener : listeners) {
listener.numberChanged(num);
}
}
}
}
class Ideone
{
public static void main
(String[] args
) {
Numbers n = new Numbers();
n.event.addListener(new NumberListener()
{
@override
public void numberChanged(int num) {
}
});
// nastaví číslo a zavola udalost
n.setnumber(100);
}
}