JAVA编程:利用外部和匿名类优化Java代码
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。优化Java1.1经由过程对Java言语标准举行修正,明显简化了一些有用布局的完成。在那些修正中,最有目共睹的就是外部类和匿名类。如使用妥当,它们可以使程序更容易了解和保护。上面来看看这些特征详细是怎样事情的,怎样准确利用它们,和怎样制止一些罕见的毛病。外部类复杂地说,“外部类”是在另外一个类的外部声明的类。从Java1.1入手下手,你可在一个类中声明另外一个类,这与声明字段和办法十分类似。包装了外部类声明的类就称为“内部类”。实践上,Java言语标准还同意你做更多的事变,包含:在另外一个类大概一个接口中声明一个类。在另外一个接口大概一个类中声明一个接口。在一个办法中声明一个类。类和接口声明可嵌套恣意深度。清单A是类和接口的一些空缺声明,它演示了这些大概性。利用一个import语句,你可像利用其他任何尺度类那样省略package称号。别的,在内部类中,可使用复杂称号来援用一切外部类和接口(拜见清单A中的new语句)。注重从Method1中援用Inner2仍需指定Interface1,由于Inner2在一个分歧的级别上。表A总结了清单A中声明的每一个外部类和接口的完整限制称号。用了import语句以后,便可接纳较短的情势。固然,在内部类中,你还可省略内部类的称号。称号类/接口Inner1mypackage.Inner1Interface1mypackage.Interface1Inner2mypackage.Interface1.Inner2Interface2mypackage.Interface1.Interface2Inner3Inner3关于Method1来讲是local的,以是它不成在办法内部会见
援用外部类外部类最天然的一种使用就是声明只在另外一个类的外部利用的类,大概声明与另外一个类亲切相干的类。如清单B所示,它是一个链表的复杂完成。因为Node类一般只在LinkedList的局限内利用,以是最好将Node声明为LinkedList的一个外部类。合用于类成员的会见把持修正符也合用于外部类;也就是说,外部类能够具有package、protected、private和public会见权限,它们的语义和一般的语义没有甚么分歧。因为Node要在LinkedList的内部利用,以是把它声明为public。但是,润色符static具有分歧的寄义。使用于外部类时,它声明的类具有与其他类不异的语义,也就是可举行实例化,并像一个尺度类那样利用。唯一的区分就是它具有对内部类的一切静态成员的完整会见权限。清单C展现了一个复杂的程序,它创立一个链表,并将它打印到尺度输入设备。
非静态外部类假如外部类没有指定static润色符,就具有对内部类的一切成员的完整会见权限,包含实例字段和办法。为完成这一举动,非静态外部类存储着对内部类的实例的一个隐式援用。以是,对一个非静态外部类举行实例化必要接纳分歧语法的new语句:.new这类情势的new语句请求内部类的一个实例,使外部类能在谁人实例的高低文中创立。注重清单A声了然几个非静态外部类,并用尺度的new语句在Method1中实例化它们。之以是能那样做,是由于Method1是内部类的一个实例办法,以是new语句会在内部类的一个实例的高低文中隐式地实行。只要在内部类的内部大概在其他对象的高低文中实例化一个非静态外部类时,才必要利用修正过的语法。可是,非静态外部类具有一些限定。特别是,它们不克不及声明静态初始化列表和静态成员,除非是在常量字段中。别的,办法外部声明的外部类不克不及会见办法的部分变量和参数,除非它们被初始化成final。
匿名类匿名类是不克不及着名称的类,以是没举措援用它们。必需在创立时,作为new语句的一部分来声明它们。这就要接纳另外一种情势的new语句,以下所示:new<类或接口><类的主体>这类情势的new语句声明一个新的匿名类,它对一个给定的类举行扩大,大概完成一个给定的接口。它还创立谁人类的一个新实例,并把它作为语句的了局而前往。要扩大的类和要完成的接口是new语句的操纵数,后跟匿名类的主体。假如匿名类对另外一个类举行扩大,它的主体能够会见类的成员、掩盖它的办法等等,这和其他任何尺度的类都是一样的。假如匿名类完成了一个接口,它的主体必需完成接口的办法。注重匿名类的声明是在编译时举行的,实例化在运转时举行。这意味着for轮回中的一个new语句会创立不异匿名类的几个实例,而不是创立几个分歧匿名类的一个实例。从手艺上说,匿名类可被视为非静态的外部类,以是它们具有和办法外部声明的非静态外部类一样的权限和限定。假如要实行的义务必要一个对象,但却不值得创立全新的对象(缘故原由多是所需的类过于复杂,大概是因为它只在一个办法外部利用),匿名类就显得十分有效。匿名类特别合适在Swing使用程序中疾速创立事务处置程序。清单D就是一个十分复杂的Swing使用程序,它展现了与匿名类有关的几个观点。这个例子创立了两个匿名类。第一个对java.awt.event.WindowAdapter举行扩大,并在使用程序窗口封闭时挪用使用程序的onClose办法。即便onClose声明为private,匿名类也能挪用它,由于匿名类实质上是使用程序类的一个外部类。第二个匿名类完成了java.awt.ActionListener接口,它在一个按钮被按下后封闭使用程序窗口。注重匿名类能够会见当地变量frame。这是因为匿名类在与frame不异的办法外部声明。但是,frame要被声明为final,不然会天生编译毛病。
更优化的代码外部和匿名类是Java1.1为我们供应的两个杰出的工具。它们供应了更好的封装,了局就是使代码更简单了解和保护,使相干的类都能存在于统一个源代码文件中(这要回功于外部类),并能制止一个程序发生大批十分小的类(这要回功于匿名类)。
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.ckuyun.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 是一种突破用户端机器环境和CPU 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 是一种使网页(Web Page)产生生动活泼画面的语言 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 是一种语言,用以产生「小应用程序(Applet(s)) 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。
页:
[1]