1

我有一个好奇的问题,它是如何为一个方法指定一个引用参数并确保这个参数必须实现一个接口

例如 ActionListener 方法 actionPerformed 当您使用 addActionListener(arg) 方法将 actionListener 添加到 GUI 组件时处理事件时 arg 必须是对实现 ActionListener 接口的对象的引用,这是我的问题 addActionListener 方法如何确保其 arg 实现 ActionListener 接口

JTextField textField = new JTextField();//creating new text field

TextFieldHandler textFiledHandler = new TextFieldHandler();//object of the handler

textField.addActionListener(textFieldHandler);//here's my question
add(textField);

//creating a nested class
private class TextFieldHandler implements ActionListener {
     @Override
     public void actionPerformed (ActionEvent event) {
          //do something here
     }//end actionPerformed
}//end class TextFieldHandler
4

2 回答 2

2

您的示例方法的方法描述是:

public void addActionListener(ActionListener l)

因此,您可以传递给它的唯一类型是类型ActionListener

来源:http://docs.oracle.com/javase/6/docs/api/javax/swing/JTextField.html#addActionListener(java.awt.event.ActionListener)

于 2013-02-23T05:53:08.507 回答
1

您需要做的就是将参数的类型设置为接口名称,然后该方法将接受对象,只要它们是实现接口的类型即可。

例子:

 public void methodName(InterfaceName x) {}

将接受任何实现“InterfaceName”的对象作为参数。

在这种特殊情况下,public void addActionListener(ActionListener l)确保参数实现了ActionListener接口(Java 就是这样做的)。

于 2013-02-23T05:56:22.403 回答