好的,所以我基本上是在为我正在进行的项目创建自己的事件/侦听器系统。我试图创建一个系统,在该系统中,我使用抽象类创建一个事件,然后我可以创建一个监听器,每次调用该事件时,监听器中的代码也会被调用。以下是我目前掌握的情况:
事件java(我可以在其中创建新事件的抽象类)
private String name;
private boolean cancelled;
public String getEventName() {
if (this.name == null) {
this.name = this.getClass().getSimpleName();
}
return this.name;
}
public void setName(String name) {
this.name = name;
}
public boolean isCancelled() {
return cancelled;
}
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}
EventHandler。java(用于识别方法何时是侦听器的接口)
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface EventHandler {}
侦听器。java(用于识别类何时包含侦听器的接口)
public interface Listener {}
事件执行者。java(一个将执行侦听器代码的类,我已经开始了,但这就是我需要帮助调用方法来执行代码的地方)
public void execute(Class clazz){
if(!clazz.isAssignableFrom(Listener.class)) return;
for(Method method : clazz.getMethods()){
if(!method.isAnnotationPresent(EventHandler.class)) continue;
}
}
因此,我要问的是,当注释存在时,如何(在EventExecutor中)调用(调用)该方法。例如,该方法可以是public void onUpdate(ProgramUpdateEvent事件)或onClose(ProgramCloseEvent事件)。谢谢,非常感谢您的帮助。