为什么ActionEvent要求id?

时间:2014-09-17 17:54:24

标签: java undefined-behavior

制作new ActionEvent时,您需要提供id的整数。文档说这是:

  

标识事件的整数。有关允许值的信息,请参阅ActionEvent

的类说明

ActionEvent的类描述说:

  

如果任何特定id实例的ActionEvent参数不在ACTION_FIRSTACTION_LAST的范围内,则会导致未指明的行为。

我的混淆伴随着ACTION_FIRSTACTION_LAST的价值:

/**
 * The first number in the range of ids used for action events.
 */
public static final int ACTION_FIRST                = 1001;

/**
 * The last number in the range of ids used for action events.
 */
public static final int ACTION_LAST                 = 1001;

如果id必须始终为1001,以免出现未指明的行为,那么为什么要求呢?

1 个答案:

答案 0 :(得分:2)

ActionEventAWTEvent的子类,是id的所有者。 ActionEvent的构造函数只是将id传递给super的构造函数,然后super(...)检查它是否为以下之一:

  • ActionEvent.ACTION_PERFORMED
  • ItemEvent.ITEM_STATE_CHANGED
  • AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED
  • TextEvent.TEXT_VALUE_CHANGED

所以,ActionEvent想要确保super只从他那里获得ActionEvent.ACTION_PERFORMED,其中ACTION_PERFORMED是一个设置为ACTION_FIRST的常量。)