Почему бы не упростить до:
class Person {
private void eventOccurs() {
react();
AnotherPerson.react();
}
private react() {
//Реакция этого персонажа на событие mIdDone;
}
}
Ну или если так уж хочется через события:
public interface Event {
void subscribe(Actor a);
}
public interface FullEvent extends Event {
void fire();
void addReaction(...)
}
public class Person {
private final FullEvent fullEvent = new FullEventImpl();
public getEvent() {
return new Event() { // Теперь никак нельзя вызвать fire() - ни через приведение типов, ни через рефлексию.
@Override
public subscribe(Actor a) {
fullEvent.subscribe(a);
}
}
}
....
}
UPD выше привели похожее решение.