11.5.7 匿名内部类实现监听器
大部分时候,事件处理器都没有复用价值(可复用代码通常会被抽象成业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适。实际上,这种形式是目前使用最广泛的事件监听器形式。
程序示例 匿名内部类实现监听器
下面程序使用匿名内部类来创建事件监听器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import java.awt.*; import java.awt.event.*;
public class AnonymousEventHandler { private Frame f = new Frame("测试"); private TextArea ta = new TextArea(6, 40);
public void init() { f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.out.println("用户试图关闭窗口!\n"); System.exit(0); } }); f.add(ta); f.pack(); f.setVisible(true); }
public static void main(String[] args) { new AnonymousEventHandler().init(); } }
|
上面程序中使用匿名内部类创建了一个事件监听器对象,“new 监听器接口()
”或“new 事件适配器()
”的形式就是用于创建匿名内部类形式的事件监听器。
如果事件监听器接口内只包含一个方法,通常会使用Lambda
表达式代替匿名内部类创建监听器对象,这样就可以避免烦琐的匿名内部类代码。遗憾的是,如果要通过继承事件适配器来创建事件监听器,那就无法使用Lambda
表达式