如何解释 下面的 几句 adapter 代码

honghuixing 2003-09-14 08:31:06
new WindowAdapter() { 是构造函数? 那怎么有new ? WindowAdapter() 这种Adapter 是作什么的 ?


class Test extends Frame {

public Test() {
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
}
...全文
41 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzj5385 2003-11-30
  • 打赏
  • 举报
回复
你的程序等价于以下用内部类来实现:
class Test extends Frame {

public Test() {
addWindowListener(new MyListener());
}
private class MyListener extends WindowAdapter {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
}
}
在内部类中为了方便可以省略自己定义的类名,直接用父类的名字来代替,new的时候其实也是调用父类的构造函数,这种方法也就是匿名类。
适配器类是用空方法实现了接口的中的所有方法,因为在实现一个接口时你必须实现接口中的每一个方法,但有一些方法对你没有什么用,你也得用一个空方法来实现,否则编译通不过,这样程序代码显得很繁琐,所以类库中这定义了这种适配器类,你只要定义适配器类的子类,重载一下对你有用的方法就可以了。
stamp80 2003-09-21
  • 打赏
  • 举报
回复
先定义类名(比如说,定义一个类 extends WindowAdapter)然后再new。这就不叫匿名类了。在这里,你直接用了WindowAdapter类,当然算是匿名类。WindowAdapter()当然是WindowAdapter类的构造函数。
iamsea11 2003-09-21
  • 打赏
  • 举报
回复
匿名类 是?
honghuixing 2003-09-14
  • 打赏
  • 举报
回复
匿名类 是 什么 ?
stamp80 2003-09-14
  • 打赏
  • 举报
回复
有关Window事件的事件适配器。如果你用的是new WindowListener(),那么不得不实现windowActivated,windowClosed,windowClosing,windowDeactivated,windowDeiconified,windowIconified,windowOpened等方法。即使某些方法里面一个字符也不写。如果写成new WindowAdapter,那么只需要把需要重新复写的方法写一下就可以了。就像你上面写的,只需要关闭窗口时作些工作,就只复写一下windowClosing就可以了,其他的不用再写。
feishao45 2003-09-14
  • 打赏
  • 举报
回复
这是一个实现窗体事件的适配器的类,实现了WINDOWLISTEN接口,你翻一下JDK的文档就可以看到
这用的是他的一个匿名类

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧