始终将参数传递给java中的事件处理程序是否重要?

时间:2013-11-13 05:10:16

标签: java swing api events event-handling

嗯,据我所知,事件对象作为参数传递给Java中的事件处理函数,它包含有关事件的其他信息。 因此,这意味着在我们需要之前传递该参数可能并不重要。

但是,情况并非如此......因为如果缺少对象参数,它会抛出错误。 例如,这会引发错误..

public void actionPerformed() {     //since the event object parameter is missing

        button.setText("Clicked");
    }

为什么会这样? 传递参数有时是浪费,为什么Swing / AWT Java API中没有允许事件处理程序完全不包含参数的方法呢? 这真的很舒服。  NO?

1 个答案:

答案 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对象,请忽略它。