匿名类是没有名字的内部类,所以在创建时,必须作为一个new语句的一部分来声明它们,这就要采用另一种形式的new语句。如下所示:
new<类或接口><类的主体>
这种形式的new语句声明一个新的匿名类,他对一个给定的类进行扩展,或实现一个给定的接口。他还创建一个类的新实例,并把它作为语句的结果而返回。要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体。
假如匿名类对另一个类进行扩展,他的主体能够访问类的成员覆盖他的方法,这和其他任何标准的类是相同的。假如匿名类实现了一个接口,他的主体必须实现接口的方法。
ps:匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着for循环中的一个new语句会创建相同匿名类的几个实例,而不是创建几个不同匿名类的一个实例。从技术上说,匿名类可被视为非静态的内部类,所以它们具备和方法内部声明的非静态内部类相同的权限和限制。假如要执行任务需要一个对象,但却不值得创建全新的对象,匿名类就显得很有用。匿名类尤其适合在swing应用程序中快速创建事件和处理程序。
public class niminglei{
public static void main (String []args){
Frame frm=new Frame("产生一个窗体");
frm.setSize(300,300);
frm.setVisible(true);
frm.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}