请考虑这是为了理解api而不是质疑建筑师的判断。
参考javafx.event.Event
的构造函数,我需要传递EventType
Event
来实例化Event
。我看对了吗?如果是这样,这不是循环参考吗?
答案 0 :(得分:3)
不,不是,因为通用参数在编译时解析。在运行时,没有任何内容传递给Event
构造函数,而是传递给EventType
。
答案 1 :(得分:2)
不是你的意思。
EventType实例可以引用其他EventType实例,但不能引用Event实例。看一下EventType的构造函数和方法,密切注意方法/构造函数参数和返回类型。
答案 2 :(得分:1)
这不是周期性的,但它确实需要很多思考才能理解。
从您提供的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
扩展Event
。然后我们会有一个与EventType
一起使用的FooEvent
。
另外,如果您查看EventType
的JavaDoc,它会说:
This class represents a specific event type associated with an Event.