嗯,据我所知,事件对象作为参数传递给Java中的事件处理函数,它包含有关事件的其他信息。 因此,这意味着在我们需要之前传递该参数可能并不重要。
但是,情况并非如此......因为如果缺少对象参数,它会抛出错误。 例如,这会引发错误..
public void actionPerformed() { //since the event object parameter is missing
button.setText("Clicked");
}
为什么会这样? 传递参数有时是浪费,为什么Swing / AWT Java API中没有允许事件处理程序完全不包含参数的方法呢? 这真的很舒服。 NO?
答案 0 :(得分:5)
是的,重要的是,参数构成了接口所述的合同的一部分。
interface
描述了实现的期望。
public interface ActionListener {
public void actionPerformed(ActionEvent evt);
}
为了让一个类能够调用ActionListener
的任何实现,它不仅必须提供方法的名称,还要提供它(interface
)列出的任何参数。
public void actionPerformed() {
button.setText("Clicked");
}
不符合ActionListener
合同的要求,因此无法调用。实际上,假设您对implements ActionListener
进行了分类,除非您提供表单方法签名(public void actionPerformed(ActionEvent evt)
)的实现,否则不会编译。
如果您不想使用evt
对象,请忽略它。