invoke головного мозга

jopi

Попрошайка
1,421
30
260
короче опять проблема, есть метод, выглядит так

Java:
@EventHandler
public void on(test event) {
    System.out.println("rabotaet");
}
находится он в классе claz.class, объект этого класса я регистрирую в обработчике событий, потом отправляю объект события test рефлексией
кое как через какие-то костыли проверку проходит и на invoke он крашится мол аргумент не тот
что может не так быть?

EventBus:
public class EventBus {
    static List<Object> listeners = new ArrayList<Object>();
   
    public boolean register(Object obj) {
        if (!this.listeners.contains(obj)) {
            this.listeners.add(obj);
            return true;
        }
        return false;
    }
   
    public boolean unregister(Object obj) {
        if (this.listeners.contains(obj)) {
            return this.listeners.remove(obj);
        }
        return false;
    }
   
    //TODO: CHANGE PARAMETERTYPE EQUALS FUNCTION
    public void post(test event) {
        for (Object listener : this.listeners) {
            for (Method m : listener.getClass().getMethods()) {
                if (ReflectUtils.methodAnnotatedBy(m, EventHandler.class)) {
                    if (m.getParameterTypes().length == 1) {
                        if (event.getClass().getName().equals(m.getParameterTypes()[0].getName())) { //replace that fucking shit
                            try {
                                m.invoke(listener, event); //EventBus.java:37
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    } else {
                        CrueModLoader.err("Method annotated with @EventHandler must have only one parameter <? extends Event>");
                    }
                }
            }
        }
    }
}
P.s. сначала делаю register, он появляется в listeners, и потом крашит на invoke.
Ошибка:
Код:
java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at by.fxg.crue.event.EventBus.post(EventBus.java:37)
 

jopi

Попрошайка
1,421
30
260
Он мне не подойдет с тем как он работает
 
Сверху