以下面的示例为例,ButtonExample类包含一个JButton。 JButton的ActionListener是一个匿名类。
在匿名类的actionPerformed()过程中,有一个对otherProcedure()的调用;它是ButtonExample类的一部分,并且与JButton本身分开。
为什么允许这个匿名类引用方法是一个完全独立的对象?这与内部/外部类的行为有关吗? 使用匿名类时,这是一般规则吗?是匿名类还是内部类?
import java.awt.event.*;
import javax.swing.*;
public class ButtonExample
{
public ButtonExample()
{
JFrame f=new JFrame("Button Example");
final JTextField tf=new JTextField();
tf.setBounds(50,50, 150,20);
JButton b=new JButton("Click Here");
b.setBounds(50,100,95,30);
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e){
tf.setText("Hello World");
otherProcedure();
}
});
f.add(b);f.add(tf);
f.setSize(400,400);
f.setLayout(null);
f.setVisible(true);
}
public static void main(String[] args)
{
ButtonExample be = new ButtonExample();
}
private void otherProcedure()
{
System.out.println("Other Procedure");
}
}