快速业务通道

对Java嵌套类的讨论 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
器为该匿名内部类产生的class文件名是AnonymousInnerClassDemo2$1.class。

对Java嵌套类的讨论(11)

时间:2010-12-21

在结束这部分前,这里提及一下匿名内部类的实际应用:开发者经常使用匿名内部类来简化事件处理--即重要事件的通告,例如移动鼠标或者按一个按钮--在程序中会产生和显示一个图形用户界面(GUIs)。使用匿名内部类作事件处理是很方便的,因为这些处理通常都不需要一个类名。列表9就是这样一个例子,这里的匿名内部类简化了windows-closing的事件处理。

Listing 9. AnonymousInnerClassDemo3.java

// AnonymousInnerClassDemo3.java    import java.awt.*; import java.awt.event.*;    class AnonymousInnerClassDemo3 { public static void main (String [] args) { // Create a rectangular frame window with a title bar at the top.    Frame f = new Frame ("Anonymous Inner Class Demo #3");    // Add a window listener that will generate a window closing event // in response to user attempts to click the little X button (on // Windows platforms) to the right of the title bar. When the user // clicks that button, the window closing event results in a call // to a method named windowClosing(). By calling System.exit (0); // from within that method, the application exits.    f.addWindowListener (new WindowAdapter () { public void windowClosing (WindowEvent e) { System.exit (0); } });    // Establish the frame window''s size as 300 horizontal pixels by // 100 vertical pixels.    f.setSize (300, 100);    // Display the frame window and get the underlying event handling // system running.    f.setVisible (true); } }

在运行时,AnonymousInnerClassDemo3显示了一个矩形的窗口,即框架窗口,它是所得GUI的主要窗口。在框架窗口出现后,用户可以移除该窗口并且停止AnonymousInnerClassDemo3的执行。这通常在用户点击窗口右上角的X按钮时发生。

当用户按X时,底层的Java windowing工具包创建了一个事件对象,并且调用一个特别的方法--windowClosing (WindowEvent e),e包含有该事件对象的一个引用--该方法放在一个被称为frame窗口的window监听者(window listener)对象中。该监听者对象通过调用Frame的addWindowListener (WindowListener wl)方法注册到底层的工具包中(因此工具包可以知道方法的位置)。

WindowListener 接口声明了几个方法,每个方法都用作一个可能的window事件。开发者不必实现全部这些方法,因为Java的windowing工具包的设计者建立了一个WindowAdapter类,它实现了全部的WindowListener方法。不过都是空的方法体,开发者可以声明一个匿名内部类来扩展WindowAdapter,并且实现其中的一个或者多个方法。如上所示,我选择覆盖windowClosing (WindowEvent e)方法,并且在其中调用System.exit (0);这样可以通过windowing工具包调用windowClosing (WindowEvent e),就可以终止一个程序(同时关闭窗口)。

注意:在为你的GUI开发事件处理时,你将会经常用到匿名内部类。在以后的文章中,我将会提供许多由匿名内部类来进行事件处理的例子。

总结

这篇文章介绍了类嵌套对于Java语言是很有用的。类嵌套不但令源代码变得清晰--因为你可以在类要管理的对象附近声明类--它同样可以减少一个源文件中,在同一级中声明类的名字的冲突机会。

有4种不同的嵌套类:nested top-level classes(嵌套顶级类), instance inner classes(实例内部类), local inner classes(本地内部类)和anonymo

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号