请问java里的匿名类是怎么回事啊
能讲讲吗
能讲讲吗
解决方案 »
- 程序中用ftp协议方式取一个路径中有中文的文件的问题
- 在java编译的时候出现error: cannot read: Student.java?怎么解决?
- 如何使程序一直运行,(不用gui,不用死循环,也不用sleep())
- 我的程序能实现题目要求就是出现了异常 怎么解决异常呀 ???请人解决
- 请教一个菜鸟问题!序列化
- 自定义一个包,调用的时候为什么不能用:import mypackge.*?如果指定import mypackage.Myclass;就行,为什么 ?
- 我用applet做个程序,加的是ComboBox组件,现在的问题是ComboBox不能显示其他数据项,求助
- 构造方法的重载练习
- resin "sun.tools.javac.Main"过时
- 大家帮忙看看,这个程序错在那里了?!
- 正准备学习JAVA,拜托高手指点迷津,那些基础书比较好?
- swing调用dll出错
public void actionPerformed(ActionEvent e){
}
});
这样写,实际上new ActionListener是new了一个自己写的类,而不是ActionListener,这个类是ActionListener的子类,但却不显示设置这个类的名称,因为没必要给他命名。
如有一个接口
public interface IAbc{
public void A();
}
MyServer类中的Service方法的参数就是IAbc类型的如
public class MyServer{
public void Service(IAbc abc){
//.....
abc.A();
//.....
}
}
如果在Test类中使用MyServer有两种方法:方法一:写一个IAbc的实现类,再用
public class MyAbc implements IAbc{
public void A(){//......}
}在访问中:
MyServer server=new MyServer();
server.Service(new MyAbc());方法二:就是用匿名类,也就是不写接口IAbc的实现,而在调用时直接给出接口实现代码
MyServer server=new MyServer();
server.Service(new IAbc(){ //这儿在声明匿名类接口实现代码
public void A(){//......} //这儿在声明接口实现代码
}
);两种方法的差异是
方法一有一个命名实现类,这个实现类可以重复使用
方法二没有命名实现类,实现代码不能重用