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

Juz*_*ing 1 java api events swing event-handling

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

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

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

        button.setText("Clicked");
    }
Run Code Online (Sandbox Code Playgroud)

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

Mad*_*mer 5

是的,重要的是,参数构成了界面所述的合同的一部分.

一个interface描述了预期实现的.

public interface ActionListener {
    public void actionPerformed(ActionEvent evt);
}
Run Code Online (Sandbox Code Playgroud)

为了使类能够调用任何实现ActionListener,它不仅必须提供方法的名称,还要提供它(interface列出)列出的任何参数.

public void actionPerformed() { 
    button.setText("Clicked");
}
Run Code Online (Sandbox Code Playgroud)

不符合合同要求,ActionListener因此不能称之为.实际上,假设您是类implements ActionListener,除非您提供表单方法signature(public void actionPerformed(ActionEvent evt))的实现,否则不会编译.

如果您不想使用该evt对象,请忽略它.

  • 您必须询问API的设计者.我想他们从未见过你不需要事件对象的情况. (3认同)