创建一个匿名内部类

来源:百度知道 编辑:UC知道 时间:2024/06/21 08:09:29
如题:创建一个匿名内部类

很简单的例子:
public class NoneClass {
Peoples man = new Peoples(){public void eat(){System.out.println("吃饭");}};
}

interface Peoples{
public void eat();
}
这里的
new Peoples(){public void eat(){System.out.println("吃饭");}};
就创建了个匿名内部类
本来接口interface是不能new的,但是紧跟new Peoples(){}后跟的大括号,表示这个接口有个实现类,其实new的是Peoples这个接口的实现类,但是这个实现类是匿名内部类的形式。

拷这段给你吧,他说得比较清楚:
匿名内部类
java的匿名内部类的语法规则看上去有些古怪,不过如同匿名数组一样,当你只需要创建一个类的对象而且用不上它的名字时,使用内部类可以使代码看上去简洁清楚。它的语法规则是这样的:

new interfacename(){......}; 或 new superclassname(){......};

下面接着前面继续举例子:

public class Goods3 {
public Contents cont(){
return new Contents(){
private int i = 11;
public int value() {
return i;
}
};
}
}

这里方法cont()使用匿名内部类直接返回了一个实现了接口Contents的类的对象,看上去的确十分简洁。

在java的事件处理的匿名适配器中,匿名内部类被大量的使用。例如在想关闭窗口时加上这样一句代码:

frame.addWindowListener(new Window