Здравствуйте, есть вопрос, делал EventManager вроде как всё нормально, но когда добавляю Event через call то вылазит ошибка, как её решить ?
Код:
public class EventManager {
public static Map<Class<? extends Event>, Map<Object, Method>> eventList;
@SneakyThrows
public EventManager () {
eventList = new HashMap<>();
}
public static void register (Object object) {
Class<? extends Event> classObject = (Class<? extends Event>) object.getClass();
for (Method method : classObject.getDeclaredMethods()) {
if (method.isAnnotationPresent( SubstribleEvent .class)) {
Class<? extends Event>[] classParameter = (Class<? extends Event>[]) method.getParameterTypes();
if (classParameter.length == 1) {
Class<? extends Event> eventType = classParameter[0];
eventList.computeIfAbsent(eventType, k -> new HashMap<>()).put(object, method);
}
}
}
}
public static void unregister (Object object) {
for (Map<Object, Method> mapList : eventList.values()) {
eventList.remove(object);
}
}
@SneakyThrows
public static void call (Object object) {
Class<? extends Event> classObject = (Class<? extends Event>) object.getClass();
Map<Object, Method> mapList = eventList.get(classObject);
if (mapList != null) {
for (Method method : mapList.values()) {
method.invoke(method.getDeclaringClass().getInterfaces(), object);
}
}
}
}