这种方法有什么用?

我经常遇到这种注册动作监听器的方式。

虽然我最近一直在使用这种方法,但我不明白这是怎么回事

这是一个:{

submit=new JButton("submit"); submit.addActionListener(new ActionListener(){ // line 1 public void actionPerformed(ActionEvent ae) { submitActionPerformed(ae); } }); //action listener added 

调用的方法:

 public void submitActionPerformed(ActionEvent ae) { // body } 

在这个方法中,我不需要实现ActionListener。 为什么?

另外,请解释标记为line 1的代码。

请清楚解释2个片段。

您在技术上确实实现了ActionListener。 当你调用addActionListener

 submit.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent ae) { submitActionPerformed(ae); } }); 

您创建了一个匿名类的实例,或一个实现没有名称的ActionListener的类。

换句话说,上面的代码段基本上就像我们用本地内部类做的那样 :

 class MyActionListener implements ActionListener { public void actionPerformed(ActionEvent ae) { submitActionPerformed(ae); } } submit.addActionListener(new MyActionListener()); 

对于您的示例,匿名类只调用您的一个成员方法submitActionPerformed 。 这样,您的方法可以具有比actionPerformed更具描述性的名称,并且除了ActionListener之外,它还使其可以在类中的其他位置使用。