1

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

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

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

        button.setText("Clicked");
    }

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

4

1 回答 1

5

是的,重要的是,该参数构成了接口所述的合同的一部分。

interface描述了对实现的期望。

public interface ActionListener {
    public void actionPerformed(ActionEvent evt);
}

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

public void actionPerformed() { 
    button.setText("Clicked");
}

不符合合同要求的ActionListener,因此不能调用。事实上,假设您使用 class ,除非您提供表单方法签名 ( )implements ActionListener的实现,否则它不会编译。public void actionPerformed(ActionEvent evt)

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

于 2013-11-13T05:12:16.370 回答