嗯,据我所知,作为参数传递给 Java 中的事件处理程序函数的事件对象保存有关事件的其他信息。因此,这意味着在我们需要之前,有时传递该论点可能并不重要。
但是,事实并非如此...因为如果缺少对象参数,它会引发错误。例如,这将引发错误。
public void actionPerformed() { //since the event object parameter is missing
button.setText("Clicked");
}
为什么会这样?有时传递参数只是浪费,那么为什么 Swing/AWT Java API 中没有允许完全不包含参数的事件处理程序的方法呢?那真的会让人欣慰很多。 不?
是的,这很重要,参数构成了接口所述的合约的一部分。
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
对象,请忽略它。