尽管构造函数的值不正确,对象仍会初始化?

时间:2013-10-21 02:33:03

标签: java generics constructor arguments javafx

Timeline pongAnimation = TimelineBuilder.create()
    .keyFrames(
      new KeyFrame(
        new Duration(10.0),
        new EventHandler<ActionEvent>() {
          public void handle(javafx.event.ActionEvent t) {
            checkForCollision();
            int horzPixels = movingRight ? 1 : -1;
            int vertPixels = movingDown ? 1 : -1;
            centerX.setValue(centerX.getValue() + horzPixels);
            centerY.setValue(centerY.getValue() + vertPixels);
          }
        }
      )
    )
    .cycleCount(Timeline.INDEFINITE)
    .build();  

这是我正在阅读的书中的JavaFX代码。它通过传递KeyFrameDuration来创建EventListener - 不多也不少。

Timeline相关联的EventHandler类的所有构造函数都需要KeyValues作为参数。但是,在上面的代码中并非如此。代码编译甚至提供所需的输出。

为什么?

文档:http://docs.oracle.com/javafx/2/api/javafx/animation/KeyFrame.html

1 个答案:

答案 0 :(得分:3)

您正在使用的构造函数是

public KeyFrame(Duration time,
        EventHandler<ActionEvent> onFinished,
        KeyValue... values)

参数KeyValue... varargs参数。如果你没有向方法传递任何参数,那么它将是一个空数组。