So I have a few classes:
public abstract class IEventExecutor<A extends Event> implements EventExecutor {
public final Class<A> type;
public IEventExecutor(Class<A> type){
this.type = type;
}
public abstract void event(A a);
@Override
public void execute(Listener listener, Event event) throws EventException{
event((A) event);
}
}
public class PluginExtension extends Plugin {
public void register(IEventExecutor<? extends Event> executor){
EventExecutor e = executor;
EventManager.registerEvent(executor.type, EventPriority.NORMAL, e, system);
}
}
The registerEvent method:
void registerEvent(@NotNull Class<? extends Event> class_, @NotNull Listener listener, @NotNull EventPriority eventPriority, @NotNull EventExecutor eventExecutor, @NotNull Plugin plugin);
In registerEvent Class<? extends Event> is needed, but executor.type provides Class<capture of ? extends Event>. I have no idea, why the "capture of" is provided, and this also means I have no Idea, how to solve this. Can someone explain what is happening, and if there is a way to solve this?