This is not cyclical, but it really, really takes a lot of thinking to understand.
From the javadoc you provided:
Event(EventType<? extends Event> eventType)
Construct a new Event with the specified event type.
The EventType<? extends Event>
should be read as "An EventType that works with a certain type of Event".
Here is another SO answer that does a better job of explaining the <? extends Class>
: https://stackoverflow.com/a/3009779/463196
For example, let's say we have a FooEvent
that extends Event
. We would then have an EventType
that works with FooEvent
.
Also, if you look at the JavaDoc for EventType
, it says:
This class represents a specific event type associated with an Event.