匿名类是内部类吗?

时间:2019-03-26 19:39:45

标签: java inner-classes anonymous

以下面的示例为例,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");
    }
}  

0 个答案:

没有答案