java语言基础特性——第二部分-java开发java经验技巧

java语言基础特性——第二部分-java开发java经验技巧

ID:30780289

大小:176.91 KB

页数:14页

时间:2019-01-03

java语言基础特性——第二部分-java开发java经验技巧_第1页
java语言基础特性——第二部分-java开发java经验技巧_第2页
java语言基础特性——第二部分-java开发java经验技巧_第3页
java语言基础特性——第二部分-java开发java经验技巧_第4页
java语言基础特性——第二部分-java开发java经验技巧_第5页
资源描述:

《java语言基础特性——第二部分-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java语言基础特性——第二部分-编程开发技术Java语言基础特性——第二部分木文由ImportNew・will翻译自javaworldo欢迎加入翻译小纽_。转载请见文末要求。使用Java5中的类型安全枚举和注解(以及元注解)编程深入研究安全的枚举类型,并学会在switch语句中正确的使用;然后开始使用Java注解和元注解类型,元注解用來阐明Java代码里注解的作用和功能,例如Targeto在我的Java语言基础特性的第一篇(±)及第一篇(下)文章中介绍了断言和泛型,最后对为什么泛型组件是Java5中相当有争议的一个新特性进行了讨论。本文我将介绍Java5另外两个

2、特性:安全的枚举类型和注解,设计它们主要为了提高Java程序的安全性和效率。安全的枚举类型枚举指定了一组和关的常量作为它的值,比如说一周的七天、东南西北四个方向、硬币正反面等。枚举一般由一组顺序的int型常量來表示,比如下面这组方向常量:staticstaticstaticstaticfinalfinalfinalfinalintintintintD1R_NORTH=0;DIRJVEST=1;DIR_EAST=2;DTR_S0UTH二3;这种方法存在一些问题:•缺乏类型安全性:由于表示枚举的常最只是一个int型整数,所以任何整数都可以作为-•个常量,此外,加法、减

3、法以及具他数学运算都可以应用于这些常量上(例如:(DIR_NORTH+DIR_EAST)/DIR_SOUTH),而这些运算对于枚举来说都是没有意义的。•未提供命名空间:枚举的常量必须以某些特定的标识符(比如DIR_)作为前缀,防止与其他的枚举常量冲突。•脆弱性:编译时,枚举的常量及他们的字面值会保存在类文件中(常量池中),因此,如果需要改变某一常量的值,不仅需要重新编译这些类文件,也需要重新编译依赖于它们的应用类文件。否则,运行吋会发生未定义错误。•缺乏可读性:打印一个常量时,只会输出它的整数值,但仅仅通过这个整数值,无法得知它的意义,英至也无法判断它是属于哪个枚

4、举。认识到枚举类型传统实现模式的问题,开发者使用了一个基于类的实现方式,即安全的枚举类型模式。这种模式已经被广泛地描述和讨论。JoshuaBloch曾在EffiectiveJavaProgrammingLanguageGuide(Addison-Wesley,2001)这本书的21章介绍过该模式,并指出了它存在的一些问题,他认为把安全的枚举类型的常量放进集合屮是不合适的,而且这种枚举常量也不能在switch语句屮使用。为了止确的理解安全的枚举类型模式,请看如下代码片段。Suit类声明了一个枚举类型,该类型描述了四种扑克花色(梅花、方片、红桃和黑桃):publicf

5、inalclassSuit//不能被继承publicstaticfinalpublicstaticfinalpublicstaticfinalpublicstaticfinalSuitCLUBS=newSuit();SuitDIAMONDS二newSuitO;SuitHEARTS二newSuitO;SuitSPADES=newSuit();privateSuitO{}//不能增加新的常量使用这个类吋,需要引入一个Suit类型的变量,并且将Suit类的某个常量值赋值给这个变量,如下所示:Suitsuit=Suit.DIAMONDS;在switch语句中,判断变量su

6、it的值时,可能通过如下方式:switch(suit){caseSuit.CLUBS:System・out.printin("clubs");break;caseSuit.DIAMONDS:System.out.println(onds〃);break;caseSuit.HEARTS:System,out.printin(,zhearts/z);break;caseSuit.SPADES:System,out.println("spades");}当执行到Suit.CLUBS时,编译器会报错:需要一个常量表达式,此时可能对代码进行如下修改:switch(suit)

7、{caseCLUBS:System.out.printin("clubs");break;caseDIAMONDS:System・out.printin("diamonds");break;caseHEARTS:System・out.println("hearts");break;caseSPADES:System,out.printin(,zspades,z);然而,当运行到CLUBS时,编译器仍然会报错:找不到变量值。安全的枚举类型模式不能运用于switch语句。但是,我们叮以使用Java5中新引入的安全的枚举类型,它不仅解决了这种模式的问题,同时也继承了这种

8、模式的优点

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。