Вопрос EventManager error

  • Автор темы Автор темы Teehi
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2023
Сообщения
47
Реакции
0
Здравствуйте, есть вопрос, делал EventManager вроде как всё нормально, но когда добавляю Event через call то вылазит ошибка, как её решить ?​
Код:
Expand Collapse Copy
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);
            }
        }
    }

}
image.png
 
Здравствуйте, есть вопрос, делал EventManager вроде как всё нормально, но когда добавляю Event через call то вылазит ошибка, как её решить ?​
Код:
Expand Collapse Copy
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);
            }
        }
    }

}
Вы наверное просто не объявили объект класса EventManager
 
Назад
Сверху Снизу