请认为这是一种理解 api 的尝试,而不是质疑架构师的判断。
参考 的构造函数javafx.event.Event
,我需要传递一个EventType
ofEvent
来实例化一个Event
. 我读对了吗?如果是这样,这不是循环引用吗?
不,不是,因为泛型参数是在编译时解析的。在运行时,Event
除了一个EventType
.
不是你的意思。
EventType 实例可以引用其他 EventType 实例,但不能引用 Event 实例。看一下EventType的构造函数和方法,密切关注方法/构造函数参数和返回类型。
这不是周期性的,但确实需要大量思考才能理解。
从您提供的 javadoc 中:
Event(EventType<? extends Event> eventType)
Construct a new Event with the specified event type.
应将其EventType<? extends Event>
读作“适用于特定类型事件的 EventType”。
这是另一个 SO 答案,可以更好地解释<? extends Class>
:https ://stackoverflow.com/a/3009779/463196
例如,假设我们有一个FooEvent
that extends Event
。然后我们将有一个EventType
与FooEvent
.
此外,如果您查看 JavaDoc for EventType
,它会说:
This class represents a specific event type associated with an Event.