这是循环参考吗?

时间:2013-01-31 03:55:24

标签: java generics javafx-2

请考虑这是为了理解api而不是质疑建筑师的判断。

JavaFX Event

参考javafx.event.Event的构造函数,我需要传递EventType Event来实例化Event。我看对了吗?如果是这样,这不是循环参考吗?

3 个答案:

答案 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.